Hello
My daughter has remote controlled car - but remote is missing. I found another remote which is IR instead of 2.4GHz. So I used arduino with IR receiver and motor driver module to replace original car board.
I read codes that IR remote is sending and made up sketch that will controll car. There is one thing I dont know how to do.
Car is going forward, backward, right left etc. as long as there is signal from remote when switch on remote is released remote is sending another code - STOP code- used to switch off motors. But if car looses signal from remote its doing last action he did before loosing signal - if going forward it will go forward until gets STOP code from remote and that is the problem I need help with.
How to stop motors if there is no code received when expected?
I tried it by 'default' case in switch - but that works only if value is different than other cases - not with 'no value received'. tried 'while' , 'if', 'else' but cant get that to work.
my code:
#include <IRremote.h>
int RECV_PIN = 3; //IR signal pin
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin");
pinMode(6, OUTPUT); //motor controller sleep
pinMode(8,OUTPUT); //drive 1
pinMode(9,OUTPUT); //drive 2
pinMode(10,OUTPUT); //turn 1
pinMode(11,OUTPUT); //turn 2
}
void loop()
{
digitalWrite(6,HIGH); //motor driver on - LOW signal can be used to turn off motors when signal lost
if (irrecv.decode(&results))
{Serial.println(results.value, HEX);
switch(results.value)
{
case 0x952D6661:
Serial.println("Forward Straight");
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
break;
case 0x23262881:
Serial.println(" Forward Left");
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
break;
case 0x919A644A:
Serial.println(" Forward Right");
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
break;
case 0xE213B5FC:
Serial.println("Back");
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
break;
case 0x9AC34E4B:
Serial.println(" Back Right");
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
break;
case 0xDAE44B8A:
Serial.println(" Back Left");
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
break;
case 0x64CBF9DA:
Serial.println(" Turn Left");
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
break;
case 0x607B80BB:
Serial.println(" Turn Right");
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
break;
case 0xEE587246:
Serial.println(" Neutral");
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
}
irrecv.resume(); // Receive the next value
}
Any help will be appreciated.
Thank you