#include <LiquidCrystal_I2C.h>
#include <LinkedList.h>
#include <StateMachine.h>
unsigned long millisInicial;
unsigned long millisAtual;
LiquidCrystal_I2C display = LiquidCrystal_I2C(0x27,16,2);
/*
StateMachine maquina = StateMachine();
State* S1 = maquina.addState(&fechado);
State* S2 = maquina.addState(&atencao);
State* S3 = maquina.addState(&aberto);
State* S4 = maquina.addState(&abertoPCD);
*/
void setup() {
display.begin(16,2);
display.print("Display");
DDRD = 0xFC; //Pinos 0 e 1 input, 2-7 output
DDRC = 0x2; //B10 = A0 input, A1 output
//B00110000 = 0x30 = A:verde, P:vermelho
//B00101000 = 0x28 = A:amarelo, P:vermelho
//B01000100 = 0x44 = A:vermelho, P:verde
//B00000100 = 0x4 = A:vermelho, P:verde apagado
millisInicial = millis();
/*
S1->addTransition(&transicaoS1S2,S2);
S2->addTransition(&transicaoS2S3,S3);
S3->addTransition(&transicaoS3S4,S4);
S3->addTransition(&transicaoS3S1,S1);
S4->addTransition(&transicaoS4S1,S1);
*/
}
void loop() {
/*
millisAtual = millis();
if (millisAtual - millisInicial >= 1000)
{
digitalWrite(13, !digitalRead(13));
millisInicial = millisAtual;
}
*/
contador(10);
}
void fechado(){
}
void atencao(){
}
void aberto(){
}
void abertoPCD(){
}
bool transicaoS1S2(){
millisAtual = millis();
if(millisAtual - millisInicial >= 10000)
{
millisInicial = millisAtual;
return true;
}
}
bool transicaoS2S3(){
millisAtual = millis();
if(millisAtual - millisInicial >= 5000)
{
millisInicial = millisAtual;
return true;
}
}
bool transicaoS3S4(){
return true;
}
bool transicaoS3S1(){
millisAtual = millis();
if(millisAtual - millisInicial >= 10000)
{
millisInicial = millisAtual;
return true;
}
}
bool transicaoS4S1(){
millisAtual = millis();
if(millisAtual - millisInicial >= 30000)
{
millisInicial = millisAtual;
return true;
}
}
void contador(int segundos){
//display.setCursor(0,1);
//display.print("> 00:00");
millisAtual = millis();
if(millisAtual - millisInicial >= 1000){
for(int x = segundos; x > 0; x--){
display.setCursor(5,1);
if(x >= 10)
display.print(String(x));
else
display.print("0" + String(x));
};
millisInicial = millisAtual;
};
}