# 4 Temporizadores usando millis() - sem delay()

**URL:** <https://forum.fazedores.com/t/4-temporizadores-usando-millis-sem-delay/5064>\
**Category:** Sem Categoria\
**Created:** [Dezembro 30, 2017, 7:50pm UTC](https://forum.fazedores.com/t/4-temporizadores-usando-millis-sem-delay/5064 "2017-12-30T19:50:30Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![h3lyo](https://avatars.discourse-cdn.com/v4/letter/h/f05b48/32.png) [@h3lyo](https://forum.fazedores.com/u/h3lyo)\
**Post date:** [Dezembro 30, 2017, 7:50pm UTC](https://forum.fazedores.com/t/4-temporizadores-usando-millis-sem-delay/5064/1 "2017-12-30T19:50:30Z")

</div>

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](https://youtu.be/AhQQgb2-QWQ)

TODA E QUALQUER AJUDA É BEM VINDA.  
[h3lyofilho@gmail.com](mailto: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  
}  
}

---

<div class="post-metadata">

**Author:** ![DobitAoByte](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/dobitaobyte/32/2021_2.png) [@DobitAoByte](https://forum.fazedores.com/u/DobitAoByte)\
**Post date:** [Janeiro 5, 2018, 11:39pm UTC](https://forum.fazedores.com/t/4-temporizadores-usando-millis-sem-delay/5064/2 "2018-01-05T23:39:59Z")

</div>

Você pode utilizar timers:

> **[Interrupção e timer com Arduino • Do bit Ao Byte](http://www.dobitaobyte.com.br/interrupcao-e-timer-com-arduino/)**
>
> Entenda os conceitos de interrupção e timer com Arduino através desse artigo com exemplos e elimine delays no código principal em loop().
