Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //configura o display
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(4, 3, 8, 7, 6, 5);
- //declara as variaveis
- int sensorrede=0;
- int sensorgerador=0;
- byte rede; //se no usar o 0 e 1 para os sensores retire essa linha e a de baixo
- byte gerador;
- const int geradorOn = 9;
- const int relerede = 10;
- const int relepartida = 11;
- const int relecargagerador = 12;
- const int releparada = 2;
- const int comutafasecmd=16;
- const int comutaneutrocmd=17;
- long contador = millis();
- void setup()
- {
- lcd.begin(16,2); //inicializa display de 16colunas/2linhas
- pinMode(geradorOn,OUTPUT); //so para ilustrar o gerador ligado
- digitalWrite(geradorOn,HIGH); //so para ilustrar o gerador ligado
- pinMode(relerede,OUTPUT); //define relerede como saida
- digitalWrite(relerede,HIGH); //pullup
- pinMode(relepartida,OUTPUT);// define relepartida como saida
- digitalWrite(relepartida,HIGH);//pullup
- pinMode(relecargagerador,OUTPUT);//define relecargagerador como saida
- digitalWrite(relecargagerador,HIGH);//pullup
- pinMode(releparada,OUTPUT);
- digitalWrite(releparada,HIGH);
- pinMode(comutafasecmd,OUTPUT);
- digitalWrite(comutafasecmd,HIGH);
- pinMode(comutaneutrocmd,OUTPUT);
- digitalWrite(comutaneutrocmd,HIGH);
- Serial.begin(9600);
- }
- void loop()
- {
- sensorrede=analogRead(A0);
- sensorgerador=analogRead(A1);
- if ( sensorrede < 300 ){ rede = 0; } else { rede = 1; } //abaixo de 300 falta energia = 0, acima energia ok
- if ( sensorgerador < 300 ){ gerador = 0; } else { gerador = 1; } //abaixo de 300 falta energia = 0, acima energia ok
- //rede ok e gerador faltando
- if (rede == 1 && gerador == 0) { //se no usar o 0 e 1 para os sensores retire essa linha e descomente a de baixo
- lcd.setCursor(0, 0);
- lcd.print("ENERGIA DA REDE!");
- digitalWrite(relerede,LOW);
- digitalWrite(relepartida,HIGH);
- digitalWrite(relecargagerador,HIGH);
- }
- //rede faltando e gerador faltando
- if (rede == 0 && gerador == 0) {
- Serial.println("1 - faltou energia por isso entrei nesse if");
- Serial.print("millis = ");Serial.print(millis());Serial.print(" - contador = "); Serial.print(contador);Serial.print(" soma = "); Serial.println((millis() - contador));
- if ((millis() - contador) > 10000){; //pula o if abaixo e segue as verificaçes, apos 10 segundos, se continuar faltando energia na rede e no gerador ai ele entra no if abaixo, ligando o gerador
- Serial.print("\n\n");
- Serial.println("3 >>>>>>>>>>>>>> - entrei no if dos 10 segundos");
- if (rede == 0 && gerador == 0) {
- lcd.setCursor(0, 0);
- lcd.print("REDE S/ ENERGIA!");
- digitalWrite(relerede,HIGH);
- delay(3000);
- digitalWrite(relepartida,LOW);
- lcd.setCursor(0, 1);
- lcd.print("Partindo Gerador");
- delay(3000);
- digitalWrite(relepartida,HIGH);
- }
- contador = millis();
- } else {
- Serial.println("2 - faltou energia e no deu 10seg ainda");
- }
- }
- //rede faltando e gerador ok
- if (rede == 0 && gerador == 1) {
- delay(3000);
- digitalWrite(geradorOn,LOW); //so para ilustrar o gerador (liga Led)
- digitalWrite(comutafasecmd,LOW);
- digitalWrite(comutaneutrocmd,LOW);
- delay(3000);
- digitalWrite(relecargagerador,LOW);
- lcd.setCursor(0,0);
- lcd.print("Gerador Ligado!!");
- lcd.setCursor(0, 1);
- lcd.print("Energia Gerador!");
- }
- //rede ok e gerador ok
- if (rede == 1 && gerador == 1) {
- lcd.clear();
- digitalWrite(relecargagerador,HIGH);
- delay(2000);
- digitalWrite(comutafasecmd,HIGH);
- digitalWrite(comutaneutrocmd,HIGH);
- delay(2000);
- digitalWrite(relerede,LOW);
- lcd.setCursor(0,0);
- lcd.print("EsfriandoGerador");
- lcd.setCursor(0, 1);
- lcd.print("ENERGIA DA REDE!");
- delay(10000);
- lcd.clear();
- digitalWrite(releparada,LOW);
- delay(3300);
- digitalWrite(releparada,HIGH);
- digitalWrite(geradorOn,HIGH); //so para ilustrar o gerador (desliga Led)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement