#include <IRremote.h>
#define PIN_RECEIVER A0
IRrecv receiver(PIN_RECEIVER);
const int infrared_Sensor_1 = 10;
const int infrared_Sensor_2 = 11;
const int red_LED_1 = 9;
const int green_LED_2 = 8;
int infrared_State_1;
int infrared_State_2;
void setup()
{ receiver.enableIRIn();
Serial.begin(9600);
pinMode(infrared_Sensor_1, INPUT);
pinMode(infrared_Sensor_2, INPUT);
pinMode(red_LED_1, OUTPUT);
pinMode(green_LED_2, OUTPUT);
for(int i=4;i<=7;i++) pinMode(i,OUTPUT);
}
void loop()
{ if (receiver.decode())
{ Kereta();
receiver.resume();
}
infrared_State_1 = digitalRead(infrared_Sensor_1);
infrared_State_2 = digitalRead(infrared_Sensor_2);
if (infrared_State_1 == HIGH && infrared_State_2 == HIGH)
{ digitalWrite(green_LED_2, LOW);
digitalWrite(red_LED_1, HIGH);
}
else
{ digitalWrite(green_LED_2, HIGH);
digitalWrite(red_LED_1, LOW);
}
}
void Kereta()
{ Serial.print("IRData: ");
Serial.print(receiver.decodedIRData.command);
switch (receiver.decodedIRData.command) {
case 2:
Serial.println("\tFWD");
Forward();
break;
case 152:
Serial.println("\tRVS");
Back();
break;
case 224:
Serial.println("\tLEFT");
Left();
break;
case 168:
Serial.println("\tSTOP");
Stop();
break;
case 144:
Serial.println("\tRIGHT");
Right();
break;
default:
Serial.println("\tother button");
}
}
void Back()
{ digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, LOW );
}
void Forward()
{ digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
void Left()
{ digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
for(int i=100;i<=300;i=i+100) delay(i);
}
void Right()
{ digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(4, LOW);
for(int j=100;j<=300;j=j+100) delay(j);
}
void Stop()
{ digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}