#include <LiquidCrystal_I2C.h>
#include <LinkedList.h>
#include <StateMachine.h>
const int botao = A0;
const int buzzer = A1;
volatile int statusBotao = 0;
unsigned long millisAnterior = 0;
const long intervalo = 1000;
int timer5 = 5;
int timer10 = 10;
int timer15 = 15;
bool contando = true;
LiquidCrystal_I2C lcd(0x27,16,2);
StateMachine machine = StateMachine();
State* S1 = machine.addState(&fechado);
State* S2 = machine.addState(&atencao);
State* S3 = machine.addState(&aberto);
State* S4 = machine.addState(&abertoReset);
void setup() {
Serial.begin(9600);
DDRB = B11111;
pinMode(botao, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
lcd.begin(16,2);
lcd.print("Grupo 4");
delay(3000);
S1->addTransition(&transitionS1S2,S2);
S2->addTransition(&transitionS2S3,S3);
S3->addTransition(&transitionS3S1,S1);
S4->addTransition(&transitionS4S1,S1);
}
void loop() {
machine.run();
/*if(machine.currentState == 2){
statusBotao = digitalRead(botao);
if(statusBotao == HIGH)
machine.transitionTo(S4);
}/*
/*if(statusBotao == HIGH && (machine.currentState == 2))
machine.transitionTo(S4);*/
}
void fechado(){
PORTB = B1100;
delay(2000);
}
void atencao(){
PORTB = B1010;
delay(2000);
}
void aberto(){
PORTB = B10001;
delay(2000);
}
void abertoReset(){
PORTB = B11111;
delay(2000);
}
bool transitionS1S2(){
return true;
}
bool transitionS2S3(){
return true;
}
bool transitionS3S1(){
return true;
}
bool transitionS4S1(){
return true;
}