#include <IRremote.h>
#define EnA 10
#define EnB 3
#define In1 9
#define In2 8
#define In3 7
#define In4 4
const int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
void forward() {
digitalWrite(In1, LOW);
digitalWrite(In2, HIGH);
analogWrite(EnA, 200);
digitalWrite(In3, HIGH);
digitalWrite(In4, LOW);
analogWrite(EnB, 200);
}
void backward() {
digitalWrite(In1, HIGH);
digitalWrite(In2, LOW);
analogWrite(EnA, 200);
digitalWrite(In3, LOW);
digitalWrite(In4, HIGH);
analogWrite(EnB, 200);
}
void left() {
digitalWrite(In1, LOW);
digitalWrite(In2, LOW);
analogWrite(EnA, 200);
digitalWrite(In3, HIGH);
digitalWrite(In4, HIGH);
analogWrite(EnB, 200);
}
void right() {
digitalWrite(In1, HIGH);
digitalWrite(In2, HIGH);
analogWrite(EnA, 200);
digitalWrite(In3, LOW);
digitalWrite(In4, LOW);
analogWrite(EnB, 200);
}
void off() {
digitalWrite(In1, LOW);
digitalWrite(In2, LOW);
digitalWrite(In3, LOW);
digitalWrite(In4, LOW);
}
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
irrecv.blink13(true);
// Setup motor pins
pinMode(EnA, OUTPUT);
pinMode(EnB, OUTPUT);
pinMode(In1, OUTPUT);
pinMode(In2, OUTPUT);
pinMode(In3, OUTPUT);
pinMode(In4, OUTPUT);
}
void loop() {
// IR Remote Control
if (irrecv.decode(&results)) {
irrecv.resume();
if (results.value == 0xFF629D) { // FORWARD
forward();
} else if (results.value == 0xFFA857) { // BACKWARD
backward();
} else if (results.value == 0xFF22DD) { // LEFT
left();
} else if (results.value == 0xFFC23D) { // RIGHT
right();
} else if (results.value == 0xFFA25D) { // POWER Button Turn OFF
off();
}
}
}