#include <stdio.h>
#include <stdlib.h>
//int para definir pinos 2, 3 e 4 como ouput
int array_length = 3;
//Array para definir pinos 2 e 3 como output
int Outputs[] = {2, 3, 4};
//Entrada digital 5
int Pin5 = 5;
//variaveis para gerar pulso de 50 ms
unsigned long millis_aux1, millis_aux2, millis_aux3;
bool pulso_50_ms;
bool toogle_millis_aux1;
//variaveis para timer
int i, j, a, b;
bool timer;
byte timer_nr;
void setup()
{
// inicializar serial
Serial.begin(9600);
while (!Serial)
{
; //necessário para uso da serial usb
}
//inicializar pinos 2 e 3 como output
for(int i = 0; i < array_length; i++)
{
pinMode(Outputs[i], OUTPUT);
}
//inicializar ouputs como low
for(int i = 1; i < array_length; i++)
{
digitalWrite(Outputs[i], LOW);
}
//inicializar pino 5 como entrada
pinMode(Pin5, INPUT);
//inicializar variaveis pulso 50 ms como zero
millis_aux1 = 0;
millis_aux2 = 0;
millis_aux3 = 0;
pulso_50_ms = 0;
toogle_millis_aux1 = 0;
timer_nr = 0;
i = 0;
j = 0;
timer = 0;
}
//função timer
void timer_function(int a, int b)
{
j = b;
i = 1;
timer_nr = a;
}
//timer reset
void timer_reset()
{
i = 0;
timer_nr = 0;
timer = 0;
}
void loop() {
//logica dos 50 ms
millis_aux3 = millis_aux2 - millis_aux1;
if(toogle_millis_aux1 == 0)
{
millis_aux1 = millis();
toogle_millis_aux1 = 1;
pulso_50_ms = 0;
}else if(abs(millis_aux3) < 50)
{
millis_aux2 = millis();
}else
{
pulso_50_ms = 1;
toogle_millis_aux1 = 0;
}
//função timer
if(i != 0)
{
if(j > 0)
{
j -= pulso_50_ms;
}
if(j == 0)
{
timer = 1;
}
}
if(timer_nr == 0)
timer_function(1, 20);
//imprimindo timer_1_s
if(timer == 1 && timer_nr == 1)
{
digitalWrite(Outputs[1], LOW);
digitalWrite(Outputs[0], HIGH);
Serial.println("Timer 1 s");
timer_reset();
}
if(timer_nr == 0)
timer_function(2, 40);
//imprimindo timer_2_s
if(timer == 1 && timer_nr == 2)
{
digitalWrite(Outputs[0], LOW);
digitalWrite(Outputs[i], HIGH);
Serial.println("Timer 2 s");
timer_reset();
}
if(digitalRead(Pin5) == 1)
{
digitalWrite(Outputs[2], HIGH);
}else
{
digitalWrite(Outputs[2], LOW);
}
}