LOJA FÍSICA
Praça Mauá, 4541 - Sala 22
09580-050 - São Caetano do Sul / SP
CENTRAL DE ATENDIMENTO
(11) 3522-7626
info@robocore.net
HORÁRIO DE FUNCIONAMENTO
De segunda à sexta das 9:00 às 18:30
Retornar
ao topo

Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Autor
Mensagem
3
h3lyo

Level 0
389524 xp

Registrado em:
25/12/2017





Mensagens:
5
3
h3lyo

Responder com citações
Mensagem Sab Dez 30, 2017 4:58 pm
4 Temporizadores usando millis() - sem delay() -Arduino
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
}
}

Avatar

Level 0
0 xp

Registrado em:
29/06/2017





Mensagens:
1

Avatar

Responder com citações
Mensagem Qua Jun 13, 2018 10:36 pm
4 Temporizadores usando millis() - sem delay() -Arduino
Cara estou precisando de ajuda com isso também preciso monitorar um botão que se pressionado liga um relé e um led por um tempo, tempo esse que está guardado em uma variável e depois desse tempo desliga o led e se o botão ainda estiver pressionado liga outro relé e outro led pelo tempo da variavel também mas assim que o botão for solto ou um outro botão seja apertado desligue tudo e faça outra coisa estou extremamente precisando disso já tentei com interrupção com for com while com if e nada os relés continuam acionados até acabar a rotina alguém me ajude será que consigo fazer algo com timer interrupção ou função?
Mostrar mensagens desde a última:




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Proibido
Powered by phpBB © 2001 phpBB Group