//#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C
//LiquidCrystal_I2C(12, 11, 10, 9, 8, 7);
//LiquidCrystal lcd(4, 3, 8, 7, 6, 5);
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
//declara as variaveis
int sensorrede=0;
int sensorgerador=0;
byte rede;
byte gerador;
const int geradorOn = 5;
const int relerede = 2;
const int relepartida = 4;
const int relecargagerador = 6;
const int releparada = 3;
//const int comutafasecmd=16;
//const int comutaneutrocmd=17;
unsigned long tempo=0;
int temporizador=0;
void setup()
{
//Serial.begin(9600);
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);
// lcd.init();
lcd.backlight();
// Print something
lcd.setCursor(0, 0);
lcd.print(" UPS SOLUCOES");
delay(6000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" QTA-GERADOR");
delay(2000);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("INICIALINADO...");
delay(2000);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("SISTEMA ONLINE!");
delay(2000);
lcd.clear();
delay(5000);
}
void loop()
{
sensorrede=analogRead(A0); //sensorrede recebe o sinal no pino analogico A0
sensorgerador=analogRead(A1); //senssorgerador recebe o sinal no pino analogico A1
//coloquei esse if abaixo porque acho mais facil trabalhar com 0 e 1 para tem energia ou nao.
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 desligado
if (rede == 1 && gerador == 0) {
lcd.setCursor(0, 0);
lcd.print("ENERGIA DA REDE!");
//Serial.println("REDE PRESENTE");
lcd.setCursor(0, 1);
lcd.print("REDE ALIMENTANDO!");
digitalWrite(relerede,LOW);
digitalWrite(relepartida,HIGH);
digitalWrite(relecargagerador,HIGH);
}
//rede faltando e gerador desligado
if (rede == 0 && gerador == 0) {
// temporizador=1; // inicia o temporizador
// tempo=millis(); //tempo recebe o valor de millis
//if (millis()-tempo>=20000&&temporizador==1){
if (rede == 0 && gerador == 0) {
lcd.setCursor(0, 0);
//Serial.println("REDE S/ ENERGIA!");
lcd.print("REDE S/ ENERGIA!");
digitalWrite(relerede,HIGH);
delay(3000);
digitalWrite(releparada,LOW);
delay(3000);
digitalWrite(relepartida,LOW);
lcd.setCursor(0, 1);
//Serial.println("Partindo Gerador");
lcd.print("Partindo Gerador");
delay(3500);
digitalWrite(relepartida,HIGH);
// temporizador=0;
}
}
//rede faltando e gerador ligado
if (rede == 0 && gerador == 1) {
delay(4000);
digitalWrite(geradorOn,LOW); //so para ilustrar o gerador (liga Led)
// digitalWrite(comutafasecmd,LOW);
//digitalWrite(comutaneutrocmd,LOW);
delay(4000);
// digitalWrite(relecargagerador,LOW);
digitalWrite(releparada,LOW);
lcd.setCursor(0,0);
lcd.print("Gerador Ligado!!");
lcd.setCursor(0, 1);
lcd.print("Energia Gerador!");
}
//rede ok e gerador ligado
if (rede == 1 && gerador == 1) {
lcd.clear();
digitalWrite(relecargagerador,HIGH);
delay(2000);
//digitalWrite(comutafasecmd,HIGH);
//digitalWrite(comutaneutrocmd,HIGH);
digitalWrite(geradorOn,HIGH);
delay(2000);
digitalWrite(relerede,LOW);
lcd.setCursor(0,0);
//Serial.println("EsfriandoGerador");
lcd.print("EsfriandoGerador");
//delay(300);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("ENERGIA DA REDE!");
delay(10000);
lcd.clear();
digitalWrite(releparada,LOW);
delay(3300);
digitalWrite(releparada,HIGH);
digitalWrite(geradorOn,HIGH); //led so para ilustrar o gerador (desliga Led)
}
}
/*
// These constants won't change:
const int analogPin = A0; // pin that the sensor is attached to
const int rede = 2; // pin that the LED is attached to
const int ignicao = 3;
const int partida = 4;
const int gerador = 5;
const int threshold = 400; // an arbitrary threshold level that's in the range of the analog input
int contador = 0;
unsigned long tempo = 0;
//---------------------------------------
void setup() {
// initialize the LED pin as an output:
pinMode(rede, OUTPUT);
pinMode(ignicao, OUTPUT);
pinMode(partida, OUTPUT);
pinMode(gerador, OUTPUT);
// initialize serial communications:
Serial.begin(9600);
}
//--------------------------------------------
/*
void realizarPartida() {
if (digitalRead(ignicao) == HIGH) {
contador = tempo + 3;
//lcd.print("Contador");
//lcd.setCursor(0, 1);
//lcd.print(conta);
}
while (digitalRead(ignicao) == HIGH);
}
*/
//-----------------------------------------------
/*
void loop() {
// read the value of the potentiometer:
int analogValue = analogRead(analogPin);
// if the analog value is high enough, turn on the LED:
if (analogValue > threshold) {
Serial.println("REDE PRESENTE");
delay(300);
digitalWrite(rede, HIGH);
digitalWrite(ignicao, LOW);
digitalWrite(partida, LOW);
digitalWrite(gerador, LOW);
}
if (analogValue < threshold) {
Serial.println("REDE AUSENTE");
delay(300);
digitalWrite(rede, LOW);
digitalWrite(ignicao, HIGH);
//realizarPartida();
digitalWrite(partida, HIGH);
delay(300);
digitalWrite(partida, LOW);
delay(800);
digitalWrite(gerador, HIGH);
}
// print the analog value:
Serial.println(analogValue);
delay(1); // delay in between reads for stability
}
*/