#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BTN_INPUT 9
#define ledsalida 13
LiquidCrystal_I2C lcd(0x27, 12, 2);
int contador = 0;
int contador2 = 0;
int state = 0;
int progress = 0;
void setup() {
pinMode(ledsalida, OUTPUT);
pinMode(BTN_INPUT, INPUT_PULLUP);
lcd.init();
lcd.backlight();
//Serial.begin(9600);
//digitalWrite(ledsalida, 1);
}
void loop() {
int btnResult = digitalRead(BTN_INPUT);
// Actualizar variables / logica programa
//----------------------------------------------
switch (state)
{
case 0: // Menu: contador
{
contador = contador + 1;
if (contador == 6) contador = 0;
if (btnResult == 0) state = 1;
} break;
case 1: // Menu: barra progreso
{
progress++;
if (progress > 8)
{
state = 2;
progress = 0;
}
} break;
case 2: // Menu: completado
{
if (btnResult == 0) state = 3;
} break;
case 3: // Menu: contador
{
contador2 = contador2 + 1;
if (contador2 == 6) state = 0;
} break;
default: break;
}
//----------------------------------------------
// Dibujar salida por pantalla
//----------------------------------------------
lcd.clear();
digitalWrite(ledsalida, 1);
switch (state)
{
case 0:
{
lcd.setCursor(0, 1);
lcd.print("Contador: ");
lcd.print(contador);
lcd.setCursor(0, 0);
if (contador % 2) lcd.print("Led ON");
else lcd.print(" Led OFF");
if (contador % 2) digitalWrite(ledsalida, 1);
else digitalWrite(ledsalida, 0);
} break;
case 1:
{
lcd.setCursor(0, 0);
lcd.print("Installing...");
for (int i = 0; i < progress; i++)
{
lcd.setCursor(i, 1);
lcd.print("#");
if (i % 2)
{ digitalWrite(ledsalida, 1);
delay(10);
digitalWrite(ledsalida, 0);
delay(10);
}
else digitalWrite(ledsalida, 0);
}
} break;
case 2:
{
lcd.setCursor(2, 0);
lcd.print("COMPLETED!!!");
delay(1000);
lcd.setCursor(2, 0);
lcd.print("Push Button");
} break;
case 3:
{
lcd.setCursor(0, 0);
if (contador2 % 2)
{
lcd.print("Start production");
lcd.setCursor(0, 1);
lcd.print("||||||||||||||||");
}
//else lcd.print(" ");
} break;
default: break;
}
delay(500);
//-------------------------------------------------
}