#include <IRremote.h>
//the defintions
#define irpin A0
#define led LED_BUILTIN
#define enable_1 5
#define enable_2 6
#define enable_3 9
#define enable_4 11
#define forward_1 4
#define forward_2 2
#define forward_3 8
#define forward_4 A2
#define backward_1 3
#define backward_2 7
#define backward_3 10
#define backward_4 A1
IRrecv ir(irpin);
decode_results results;
//----------------------------------------------------------------------
void setup() {
// put your setup code here, to run once:
pinMode(enable_1, OUTPUT);
pinMode(enable_2, OUTPUT);
pinMode(enable_3, OUTPUT);
pinMode(enable_4, OUTPUT);
pinMode(forward_1, OUTPUT);
pinMode(forward_2, OUTPUT);
pinMode(forward_3, OUTPUT);
pinMode(forward_4, OUTPUT);
pinMode(backward_1, OUTPUT);
pinMode(backward_2, OUTPUT);
pinMode(backward_3, OUTPUT);
pinMode(backward_4, OUTPUT);
Serial.begin(9600);
ir.enableIRIn();
}
//----------------------------------------------------------------------
void stop() {
analogWrite(enable_1, 0);
analogWrite(enable_2, 0);
analogWrite(enable_3, 0);
analogWrite(enable_4, 0);
}
//----------------------------------------------------------------------
void loop() {
// put your main code here, to run repeatedly
unsigned long code = 0;
if (IrReceiver.decode()) {
code = IrReceiver.decodedIRData.decodedRawData;
Serial.println(code, HEX);
}
if (code == 0x9768FF00 ) { // Debug Press key 0
//if (code == 0xFF02FD) { // original
//this is to go forward
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
stop();
digitalWrite(led, HIGH);
analogWrite(enable_1, 255);
analogWrite(enable_2, 255);
analogWrite(enable_3, 255);
analogWrite(enable_4, 255);
digitalWrite(forward_1, HIGH);
digitalWrite(forward_2, HIGH);
digitalWrite(forward_3, HIGH);
digitalWrite(forward_4, HIGH);
digitalWrite(backward_1, LOW);
digitalWrite(backward_2, LOW);
digitalWrite(backward_3, LOW);
digitalWrite(backward_4, LOW);
}
if (code == 0xCF30FF00 ) { // Debug Press key 1
//if (code == 0xFF22DD) { // original
//this is to go backward
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
stop();
digitalWrite(led, HIGH);
analogWrite(enable_1, 255);
analogWrite(enable_2, 255);
analogWrite(enable_3, 255);
analogWrite(enable_4, 255);
digitalWrite(forward_1, LOW);
digitalWrite(forward_2, LOW);
digitalWrite(forward_3, LOW);
digitalWrite(forward_4, LOW);
digitalWrite(backward_1, HIGH);
digitalWrite(backward_2, HIGH);
digitalWrite(backward_3, HIGH);
digitalWrite(backward_4, HIGH);
}
if (code == 0xE718FF00 ) { // Debug Press key 2
//if (code == 0xFFC23D) { // original
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
// and this is to stop
stop();
analogWrite(enable_1, 0);
analogWrite(enable_2, 0);
analogWrite(enable_3, 0);
analogWrite(enable_4, 0);
digitalWrite(forward_1, LOW);
digitalWrite(forward_2, LOW);
digitalWrite(forward_3, LOW);
digitalWrite(forward_4, LOW);
digitalWrite(backward_1, HIGH);
digitalWrite(backward_2, HIGH);
digitalWrite(backward_3, HIGH);
digitalWrite(backward_4, HIGH);
}
ir.resume();
}