Angel
Gracias por responder aquí va el código entero, me gustaría poder cambiar los delays por millis.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int RedStat = 8;
const int GenStat = 10;
const int RLACC = 5;
const int RLStart = 4;
const int RLSolen = 7;
const int RLGen = 3;
const int RLRed = 2;
int intentos = 0;
// variables will change:
int GenState = 0;
int RedState = 0;
void setup()
{
pinMode(RLACC, OUTPUT);
pinMode(RLStart, OUTPUT);
pinMode(RLSolen, OUTPUT);
pinMode(RLGen, OUTPUT);
pinMode(RLRed, OUTPUT);
digitalWrite(RLACC, HIGH);
digitalWrite(RLStart, HIGH);
digitalWrite(RLSolen, HIGH);
digitalWrite(RLGen, HIGH);
digitalWrite(RLRed, HIGH);
// initialize the pushbutton pin as an input:
pinMode(RedStat, INPUT);
pinMode(GenStat, INPUT);
Serial.begin(9600);
lcd.begin(16,2);
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(150);
lcd.noBacklight();
delay(150);
}
lcd.backlight(); // finish with backlight on
lcd.setCursor(0,0); //Start at character 4 on line 0
lcd.print(" TESIS UMAG");
delay(1000);
lcd.clear();
lcd.setCursor(0,1); //Start on line 2
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop() {
// read the state of the pushbutton value:
RedState = digitalRead(RedStat);
GenState = digitalRead(GenStat);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (RedState == LOW) {
lcd.setCursor(1,0);
lcd.print("Red ");
lcd.print("Presente");
//CONECTO LA RED DESPUES DE 5 SEGUNDOS
digitalWrite(RLGen, HIGH);
digitalWrite(RLACC, HIGH);
intentos=0;
delay(5000);
digitalWrite(RLRed, LOW);
}
else {
lcd.setCursor(1,0);
lcd.print("Red ");
lcd.print("Auscente");
digitalWrite(RLRed, HIGH);
if (GenState == LOW) {
lcd.setCursor(1,1);
lcd.print("Gen ");
lcd.print("Presente");
delay(1000);
digitalWrite(RLGen, LOW);
}
else {
// turn LED on:
// digitalWrite(ledPin, HIGH);
lcd.setCursor(1,1);
lcd.print("Gen ");
lcd.print("Auscente");
delay(1000);
if (intentos <=3 ){
//CICLO DE ENCENDIDO
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Encendiendo");
lcd.setCursor(1,1);
lcd.print("Generador");
intentos++;
digitalWrite(RLACC, LOW);
digitalWrite(RLStart, LOW);
digitalWrite(RLSolen, LOW);
delay(3000);
digitalWrite(RLStart, HIGH);
digitalWrite(RLSolen, HIGH);
delay(1000);
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Falla del Gen.");
lcd.setCursor(1,1);
lcd.print("No enciende");
digitalWrite(RLACC, HIGH);
digitalWrite(RLStart, HIGH);
digitalWrite(RLSolen, HIGH);
digitalWrite(RLGen, HIGH);
delay(10000);
lcd.clear();
}
}}}