Boa noite pessoal, fiz um codigo para um robô controlado por controle IR, bem o codigo "esta correto", o robô funciona mas com um detalhe,
Por exemplo, quando aperto o botão MODE do controle que faz o robô ir para frente ele vai indo ate eu apertar outro botão, ou seja a função fica ativa mesmo depois de soltar o botão MODE.
O que eu quero e não estou conseguindo fazer, é fazer com que o robô so obedeça o comando enquanto o botão esteja apertado, quando não houver nem um botão pressionado o robô fique parado.
o meu codigo é este:
#include <IRremote.h>
int motor1pin1 = 3;
int motor1pin2 = 4;
int motor2pin1 = 5;
int motor2pin2 = 6;
int led1 = 8;
int led2 = 9;
int receiver = A0;
IRrecv irrecv(receiver);
decode_results results;
void setup(){
pinMode(motor1pin1, OUTPUT);
pinMode(motor1pin2, OUTPUT);
pinMode(motor2pin1, OUTPUT);
pinMode(motor2pin2, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(receiver, INPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop(){
if (irrecv.decode(&results)){
switch(results.value){
//CONTROLE
case 16736925:{ // Mode
digitalWrite(motor1pin1,HIGH);
digitalWrite(motor1pin2,LOW);
digitalWrite(motor2pin1,HIGH);
digitalWrite(motor2pin2,LOW);
Serial.println("IR - FRENTE");
break;
}
case 16761405:{ // >>/
digitalWrite(motor1pin1,HIGH);
digitalWrite(motor1pin2,LOW);
digitalWrite(motor2pin1,LOW);
digitalWrite(motor2pin2,HIGH);
Serial.println(" GIRAR HORARIO ");
break;
}
case 16720605:{ // >//
digitalWrite(motor1pin1,LOW);
digitalWrite(motor1pin2,HIGH);
digitalWrite(motor2pin1,HIGH);
digitalWrite(motor2pin2,LOW);
Serial.println("GIRAR ANTI-HORARIO");
break;
}
case 16754775:{ // VOL -
digitalWrite(motor1pin1,LOW);
digitalWrite(motor1pin2,HIGH);
digitalWrite(motor2pin1,LOW);
digitalWrite(motor2pin2,HIGH);
Serial.println("IR - TRAS");
break;
}
case 16712445:{ // /<<
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
Serial.println("LIGAR LEDs");
break;
}
case 16753245:{ // on/off
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Serial.println("APAGAR LEDs");
break;
}
}
delay(100);
irrecv.resume();
}
}
E aqui um vídeo do robô caso não tenha ficado claro o meu problema