Corrigir um erro de programação de controle remoto no arduino

Olá, eu montei esse programa no caso ele faz com que 3 leds se deslocarem para direita e para esquerda apertando dois botões manuais ou dois botões no controle remoto, porém quando utilizo o controle remoto os leds se deslocam sem parar, o intuito é que eles se desloquem a cada click.

Alguém tem alguma dica pra me ajudar?

#include <IRremote.h>

#define botao1 8
#define botao2 9
#define retorna 0x1FE40BF
#define avanca 0x1FEC03F

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;
void led();
int desloca = 0x01;

void setup()
{
for(short i=0x00;i<0x08;i++) pinMode(i, OUTPUT);

pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
PORTD = desloca;
led();
}
void led()
{
if(!digitalRead(botao1))
{
delay(500);
desloca = desloca 1;
if(desloca > 0x10) desloca = 0x01;
}
if(!digitalRead(botao2))
{
delay(500);
desloca = desloca >> 1;
if(desloca == 0x00) desloca = 0x10;
}
if(results.value == retorna)
{
delay(500);
desloca = desloca 1;
if(desloca > 0x10) desloca = 0x01;
}
if(results.value == avanca)
{
delay(500);
desloca = desloca >> 1;
if(desloca == 0x00) desloca = 0x10;
}
}

Exibições: 253

Responder esta

Respostas a este tópico

Oi LS, boa tarde.

Este seu code é uma ótima oportunidade para entender o que eu sempre falo sobre postar 

codes na área de texto.

Veja o seu code postado:   Nas linhas assim escritas :   "desloca = desloca 1; " , acredito que

deveria existir um duplo carácter de < entre a palavra desloca e o número 1, mas desaparecerem.

Isto é um dos problemas no processo de display da área de texto do site. 

Qto ao seu caso, acredito que acrescentando uma linha assim:  "results.value = 0;" após

cada if do deslocamento por IR, resolverá.

Cópia do code http://pastebin.com/TXn3nz6Q

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço