Senhores, bom base em alguns exemplos da internet desenvolvi esse Sketch, mas estou tendo algumas dificuldades, visto que sou novo a área, portanto peço ajuda de vocês.
Preciso adicionar o reconhecimento de um 2º PULSO vindo da mesma entrada do 1º PULSO e também adicionar um atraso - sem a função delay() para o 4º led (LED4).
Usando a função millis() consegui os temporizadores.
Se alguém puder me ajudar a resolver o problema, ou puder melhorar o que já foi feito, fico agradecido.
OBJETIVO:
2 BOTÕES.
4 LEDS
O 1º PULSO do BOTAO1 acionar o LED1
O 1º PULSO do BOTAO2 acionar o LED2
O 2º PULSO do BOTAO2 acionar o LED3
AGUARDAR 4 segundos
acionar o LED4.
Todos mantendo suas respectivos temporizações.
Desde já agradeço.
/*
TENTANDO IMPLEMENTAR O SEGUNDO PULSO.
TENTANDO IMPLEMENTAR O ATRASO (SEM delay() PARA O 4º LED.
OBJETIVOS:
COM 1º PULSO DE BOTÃO1 LIGAR LED1
COM 1º PULSO DE BOTÃO2 LIGAR LED2
COM 2º PULSO DE BOTÃO2 LIGAR LED3
AGUARDAR 4 SEGUNDOS E LIGAR LED4 (IMPLEMENTAR)
AGUARDAR TEMPORIZAÇÕES DE LED1, LED2, LED3 E LED4
DESLIGA-LOS
IMPLEMENTAR RESET
Hélio Rodrigues
Goianira/Go
Brazil
30/12/2017
Video do sistema ainda sem 2º PULSO e sem o ATRASO para o 4º LED (LED4).
https://youtu.be/AhQQgb2-QWQ
TODA E QUALQUER AJUDA É BEM VINDA.
h3lyofilho@gmail.com
WhatsApp: (62) 99458 1897
*/
#define TEMPO_LED1 2000 //PARA USO FINAL TEMPO SERA DE 3 OU 4 SEGUNDOS - SEM AJUSTE
#define TEMPO_LED2 90000 //PARA USO FINAL TEMPO SERA DE ATÉ 3 HORAS - COM AJUSTE
#define TEMPO_LED3 7000 //PARA USO FINAL TEMPO SERA DE ATÉ 30 MINUTOS - COM AJUSTE
#define TEMPO_LED4 4000 //PARA USO FINAL TEMPO SERA DE ATÉ 10 SEGUNDOS - COM AJUSTE
unsigned char BOTAO1 = 0;//INICIA TEMPO_LED1
unsigned char BOTAO2 = 2;//INICIA TEMPO_LED2, TEMPO_LED3, TEMPO_LED4
unsigned char LED1 = 8;
unsigned char LED2 = 9;
unsigned char LED3 = 10;
unsigned char LED4 = 11;
unsigned long AGORA = 0;
unsigned long EVENTO_LED1 = 0;
unsigned long EVENTO_LED2 = 0;
unsigned long EVENTO_LED3 = 0;
unsigned long EVENTO_LED4 = 0;
void setup()
{
pinMode(BOTAO1, INPUT_PULLUP);//SINAL DE ENTRADA COM RESISTOR INTERNO ATIVO
pinMode(BOTAO2,INPUT_PULLUP);//SINAL DE ENTRADA COM RESISTOR INTERNO ATIVO
pinMode(LED1,OUTPUT);//SINAL DE SAIDA
pinMode(LED2,OUTPUT);//SINAL DE SAIDA
pinMode(LED3,OUTPUT);//SINAL DE SAIDA
pinMode(LED4,OUTPUT);//SINAL DE SAIDA
}
void loop()
{
//LIGANDO…
//LIGANDO…
//LIGANDO…
//LIGANDO…
//LIGANDO…
//LIGANDO…
//==================================================================================
//==================================================================================
//==================================================================================
//==================================================================================
AGORA = millis(); //TEMPO DESDE QUE O ARDUINO FOI LIGADO
//LED1
if (digitalRead(BOTAO1) == 0)//SE O BOTAO1 FOR PRESSIONADO…
{
EVENTO_LED1 = millis();//…MARCAMOS O TEMPO DE INICIO DO LED1
digitalWrite(LED1,1);//LIGA O LIGA O LED1
}
//LED2
if (digitalRead(BOTAO2) == 0)//SE O BOTAO2 FOR PRESSIONADO…
{
EVENTO_LED2 = millis();//…MARCAMOS O TEMPO DE INICIO DO LED2
digitalWrite(LED2,1);//LIGA O LED2
}
//LED3
if (digitalRead(BOTAO2) == 0)//SE O BOTAO2 FOR PRESSIONADO…
{
EVENTO_LED3 = millis();//…MARCAMOS O TEMPO DE INICIO LED3
digitalWrite(LED3,1);//LIGA O LED3
}
//LED4
if (digitalRead(BOTAO2) == 0)//SE O BOTAO2 FOR PRESSIONADO…
{
EVENTO_LED4 = millis();//…MARCAMOS O TEMPO DE INICIO LED4
digitalWrite(LED4,1);//LIGA O LED4
}
//DESLIGANDO…
//DESLIGANDO…
//DESLIGANDO…
//DESLIGANDO…
//DESLIGANDO…
//DESLIGANDO…
//==================================================================================
//==================================================================================
//==================================================================================
//==================================================================================
if(AGORA - EVENTO_LED1 > TEMPO_LED1)//SE ACABOU O TEMPO DE LED1
{
EVENTO_LED1 = AGORA;//RESETA O LED1
digitalWrite(LED1,0);//E DESLIGA O LED1
}
if(AGORA - EVENTO_LED2 > TEMPO_LED2)//SE ACABOU 0 TEMPO DE LED2
{
EVENTO_LED2 = AGORA;//RESETA O TEMPO DE LED2
digitalWrite(LED2,0);//E DESLIGA O LED2
}
if(AGORA - EVENTO_LED3 > TEMPO_LED3)//SE ACABOU O TEMPO DE LED3
{
EVENTO_LED3= AGORA;//RESETA O TEMPO DE LED3
digitalWrite(LED3,0);//E DESLIGA O LED3
}
if(AGORA - EVENTO_LED3 > TEMPO_LED4)//SE ACABOU O TEMPO LED4
{
EVENTO_LED4 = AGORA;//RESETA O TEMPO DE LED4
digitalWrite(LED4,0);//E DESLIGA O LED4
}
}