#define Resistencia 5
#define CODIGO_NO_TECLA 255
#define Boton_ON 1
#define Boton_Timer 2
#define Sensor_Low 3
#define Sensor_High 4
word Tiempo;
char flag_Timer1 = 0;
unsigned char tecla;
int Estado = 1;
void setup() {
pinMode(Resistencia, OUTPUT);
}
void loop() {
MAQ_Estados_Analisis();
Timer_Analizar();
}
void MAQ_Estados_Analisis(void)
{
switch(Estado)
{
case 1:
MAQ_Estado_1();
break;
case 2:
MAQ_Estado_2();
break;
case 3:
MAQ_Estado_3();
break;
case 4:
MAQ_Estado_4();
break;
case 5:
MAQ_Estado_5();
break;
default:
Estado_Inicializacion();
break;
}
}
void MAQ_Estado_1(void)
{
if(TECLADO_Read() == 1){ //boton ON presionado
Tiempo = 21600000;
Estado=2;
}
}
void MAQ_Estado_2(void)
{
if(TECLADO_Read() == 2){ //Boton timer presionado
Tiempo = Tiempo + 1800000; //suma 30 minutos al tiempo
}
if (Tiempo > 54000000){
Tiempo = 21600000;
}
if (TECLADO_Read() == 1){ //Al presionar el botón ON comienza el proceso
Timer_Disparar(1, Tiempo, 0, Fin_Timer1);
Estado=3;
}
}
void MAQ_Estado_3(void)
{
if(TECLADO_Read() == 5){ // Estado (0.0) de los sensores
if(TECLADO_Read() == 6){
digitalWrite(Resistencia,HIGH);
Estado=4;
}
}
}
void MAQ_Estado_4(void)
{
if(TECLADO_Read() == 3){ // Estado (1,1) de los sensores
if(TECLADO_Read() == 4){
digitalWrite(Resistencia,LOW);
}
Estado=5;
}
}
void MAQ_Estado_5(void){
if((flag_Timer1 == 1 ) || ((TECLADO_Read() == 1))) { //Si el timer llega a 0 o se presiona el botón On
digitalWrite(Resistencia,LOW);
Estado=1;
}
else{
Estado=3;
}
}
void Estado_Inicializacion(void){
digitalWrite(Resistencia,LOW);
Estado=1;
Tiempo=0;
}
void Fin_Timer1(void){
flag_Timer1 = 1;
}
void Display(int Horas, int minutos){
}