Olá pessoal, gostaria de uma ajuda aqui, pesquisando na internet sobre controle IR, achei no site:
um codigo que me agradou bastante, podendo ligar e desligar o led no mesmo botão pressionado no controle, a duvida em questão é, dá pra ao invés de só ligar o led, eu implementar uma sequencia para fazê-lo piscar a minha escolha? por exemplo:
eu gostaria que ao pressionar a tecla do controle, fizesse a seguinte sequencia, e quando quiser parar, pressionar a tecla novamente:
digitalWrite(8, HIGH);
delay(40);
digitalWrite(8, LOW);
delay(90);
digitalWrite(8, HIGH);
delay(40);
digitalWrite(8, LOW);
delay(90);
digitalWrite(9, HIGH);
delay(40);
digitalWrite(9, LOW);
delay(90);
digitalWrite(9, HIGH);
delay(40);
digitalWrite(9, LOW);
delay(90);
mas li que ao usar o delay, o arduino fica preso no loop, processando, e eu deveria usar o millis, mas, com tampouco conhecimento ainda, estou confuso, de como fazer essa sequencia no seguinte codigo (do link acima)
#include <IRremote.h> //INCLUSÃO DE BIBLIOTECA
int RECV_PIN = 2; //PINO DIGITAL UTILIZADO PELO FOTORRECEPTOR IR
IRrecv irrecv(RECV_PIN); //PASSA O PARÂMETRO PARA A FUNÇÃO irrecv
const int ledVermelho = 8; //PINO DIGITAL UTILIZADO PELO LED VERMELHO
const int ledVerde = 9; //PINO DIGITAL UTILIZADO PELO LED VERDE
const int ledAmarelo = 10; //PINO DIGITAL UTILIZADO PELO LED AMARELO
long int codTecla1 = 33423615; //CÓDIGO DA TECLA 1 (ALTERE PARA O CÓDIGO DECIMAL QUE VOCÊ CAPTUROU)
long int codTecla2 = 33484815; //CÓDIGO DA TECLA 2 (ALTERE PARA O CÓDIGO DECIMAL QUE VOCÊ CAPTUROU)
long int codTecla3 = 16756815; //CÓDIGO DA TECLA 3 (ALTERE PARA O CÓDIGO DECIMAL QUE VOCÊ CAPTUROU)
int stLedVermelho = 0; //VARIÁVEL QUE CONTROLA O ESTADO DO LED VERMELHO (LIGADO / DESLIGADO)
int stLedVerde = 0; //VARIÁVEL QUE CONTROLA O ESTADO DO LED VERDE (LIGADO / DESLIGADO)
int stLedAmarelo = 0; //VARIÁVEL QUE CONTROLA O ESTADO DO LED AMARELO (LIGADO / DESLIGADO)
decode_results results; //VARIÁVEL QUE ARMAZENA OS RESULTADOS (SINAL IR RECEBIDO)
void setup(){
irrecv.enableIRIn(); //INICIALIZA A RECEPÇÃO DE SINAIS IR
pinMode(ledVermelho, OUTPUT); //DEFINE O PINO COMO SAÍDA
pinMode(ledVerde, OUTPUT); //DEFINE O PINO COMO SAÍDA
pinMode(ledAmarelo, OUTPUT); //DEFINE O PINO COMO SAÍDA
}
void loop() {
//CAPTURA O SINAL IR
if (irrecv.decode(&results)) {
if((results.value == codTecla1) && (stLedVermelho == 0)){ //SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla1 E A
//VARIÁVEL stLedVermelho FOR IGUAL A 0, FAZ
digitalWrite(ledVermelho, HIGH); //LIGA O LED VERMELHO
stLedVermelho = 1; //VARIÁVEL RECEBE O VALOR 1
}else{//SENÃO, FAZ
if((results.value == codTecla1) && (stLedVermelho == 1)){ ///SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla1 E A
//VARIÁVEL stLedVermelho FOR IGUAL A 1, FAZ
digitalWrite(ledVermelho, LOW); //DESLIGA O LED VERMELHO
stLedVermelho = 0; //VARIÁVEL RECEBE O VALOR 0
}
}
if((results.value == codTecla2) && (stLedVerde == 0)){ //SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla2 E A
//VARIÁVEL stLedVerde FOR IGUAL A 0, FAZ
digitalWrite(ledVerde, HIGH); //LIGA O LED VERDE
stLedVerde = 1; //VARIÁVEL RECEBE O VALOR 1
}else{//SENÃO, FAZ
if((results.value == codTecla2) && (stLedVerde == 1)){ ///SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla2 E A
//VARIÁVEL stLedVerde FOR IGUAL A 1, FAZ
digitalWrite(ledVerde, LOW); //DESLIGA O LED VERDE
stLedVerde = 0; //VARIÁVEL RECEBE O VALOR 0
}
}
if((results.value == codTecla3) && (stLedAmarelo == 0)){ //SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla3 E A
//VARIÁVEL stLedAmarelo FOR IGUAL A 0, FAZ
digitalWrite(ledAmarelo, HIGH); //LIGA O LED AMARELO
stLedAmarelo = 1; //VARIÁVEL RECEBE O VALOR 1
}else{//SENÃO, FAZ
if((results.value == codTecla3) && (stLedAmarelo == 1)){ ///SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla3 E A
//VARIÁVEL stLedAmarelo FOR IGUAL A 1, FAZ
digitalWrite(ledAmarelo, LOW); //DESLIGA O LED AMARELO
stLedAmarelo = 0; //VARIÁVEL RECEBE O VALOR 0
}
}
irrecv.resume(); //AGUARDA O RECEBIMENTO DE UM NOVO SINAL IR
}
delay(10); //INTERVALO DE 10 MILISSEGUNDOS
}
#########################################
Então minha duvida é de como fazer a sequencia usando millis nesse codigo?