I recently wrote the code for this project but it's weird because when I press button on the remote nothing shows up on the Serial Monitor and consequently the robot doesn't respond. I know it's not a hardware issue because when I used the IRrecv Demo sketch values were displayed on the serial monitor
Please tell me what's wrong! I'm sure there are a lot of talented programmers out there!!
#include <IRremote.h>
#include <AFMotor.h>
AF_DCMotor rightMotor(1); // Right motor connected to port 1
AF_DCMotor leftMotor(2); // Left motor connected to port 2
IRrecv irrecv(A2);// IR receiver connected to pin A2(ANALOG PINS ON MOTOR SHIELD USED AS DIGITAL INS!)
decode_results results;
#define Straight 0xC1CC42BD
#define Right 0xC1CCA25D
#define Left 0xC1CC22DD
#define Back 0xC1CCC23D
void setup(){
Serial.begin(9600); // Establishing Serial Communication, THIS IS IMPORTANT!!
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
if((results.value)== Straight)
{
moveForward();
}
if((results.value)== Right)
{
turnRight();
}
if((results.value)== Left)
{
turnLeft();
}
if((results.value)== Back)
{
moveBackward();
}
else
{
Stop();
}
irrecv.resume();
}
delay(100);
}
void moveForward() {
leftMotor.setSpeed(255);
rightMotor.setSpeed(255);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
}
void turnRight(){
leftMotor.setSpeed(200);
rightMotor.setSpeed(200);
leftMotor.run(FORWARD);
rightMotor.run(BACKWARD);
delay(400);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
}
void turnLeft() {
leftMotor.setSpeed(200);
rightMotor.setSpeed(200);
leftMotor.run(BACKWARD);
rightMotor.run(FORWARD);
delay(400);
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
}
void moveBackward() {
leftMotor.setSpeed(200);
rightMotor.setSpeed(200);
leftMotor.run(BACKWARD);
rightMotor.run(BACKWARD);
}
void Stop(){
leftMotor.setSpeed(0);
rightMotor.setSpeed(0);
}