#include <IRremote.h>
String myCom;
const byte IR_RECEIVE_PIN = 8;
int turnR = 4;
int leftT = 5;
int turnL = 7;
int rightT = 9;
int highB = 10;
int lights = 11;
int power = 12;
int d =1000;
int PowerIsOn = 0;
int HeadLightOn = 0;
int HighOn = 0;
int TurnLeft = 0;
int TurnRight = 0;
int Flashing = 0;
int flash = 0;
int timer = 300;
void setup() {
Serial.begin(9600);
Serial.println("IR Receive test");
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
pinMode(turnR, OUTPUT);
pinMode(leftT, OUTPUT);
pinMode(turnL, OUTPUT);
pinMode(rightT, OUTPUT);
pinMode(highB, OUTPUT);
pinMode(lights, OUTPUT);
pinMode(power, OUTPUT);
}
void loop() {
if (IrReceiver.decode()) //Remote Reading Command
{
Serial.println(IrReceiver.decodedIRData.command);
delay(500);
IrReceiver.resume();
}
if(IrReceiver.decodedIRData.command == 162){
myCom ="powerOn";
Serial.println("PowerOn");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 168){
myCom ="HeadLights";
Serial.println("HeadLights");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 2){
myCom ="HighBeams";
Serial.println("HighBeams");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 224){
myCom ="LeftTurn";
Serial.println("LeftTurn");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 144){
myCom ="RightTurn";
Serial.println("RightTurn");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 34){
myCom ="Flashers";
Serial.println("Flashers");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 152){
myCom ="Breaks";
Serial.println("Breaks");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 226){
myCom ="Test";
Serial.println("Test");
IrReceiver.decodedIRData.command = 0;
}
if(IrReceiver.decodedIRData.command == 194){
myCom ="ftp";
Serial.println("Flash To Pass");
IrReceiver.decodedIRData.command = 0;
}
// Power
if(myCom == "powerOn" && PowerIsOn == 0){
Serial.println("power Is On");
digitalWrite(power, HIGH);
PowerIsOn = 1;
delay(d);
myCom="";
}
if(myCom == "powerOn" && PowerIsOn == 1){
Serial.println("power Is Off");
digitalWrite(power, LOW);
digitalWrite(lights, LOW);
digitalWrite(highB, LOW);
PowerIsOn = 0;
HeadLightOn = 0;
HighOn = 0;
delay(d);
myCom="";
}
// Headlights
if(myCom == "HeadLights" && HeadLightOn == 0 &&PowerIsOn == 1){
Serial.println("Headlights are on");
digitalWrite(lights, HIGH);
HeadLightOn = 1;
delay(d);
myCom="";
}
if(myCom == "HeadLights" && HeadLightOn == 1){
Serial.println("Headlights are off");
digitalWrite(lights, LOW);
digitalWrite(highB, LOW);
HeadLightOn = 0;
HighOn = 0;
delay(d);
myCom="";
}
// High Beams
if(myCom == "HighBeams" && HeadLightOn == 1 && HighOn == 0){
Serial.println("High Beams are on");
digitalWrite(highB, HIGH);
HighOn = 1;
delay(d);
myCom="";
}
if(myCom == "HighBeams" && HighOn == 1){
Serial.println("High Beams are off");
digitalWrite(highB, LOW);
HighOn = 0;
delay(d);
myCom="";
}
// Left Turn
if(myCom == "LeftTurn" && PowerIsOn == 1){
Serial.println("Left Turn Is On");
while(TurnLeft < 10){
digitalWrite(leftT, HIGH);
digitalWrite(turnL, HIGH);
delay(timer);
digitalWrite(leftT, LOW);
digitalWrite(turnL, LOW);
TurnLeft = TurnLeft + 1;
delay(timer);
}
TurnLeft = 0;
delay(d);
myCom="";
}
// Right Turn
if(myCom == "RightTurn" && PowerIsOn == 1){
Serial.println("Right Turn Is On");
while(TurnRight < 10){
digitalWrite(rightT, HIGH);
digitalWrite(turnR, HIGH);
delay(timer);
digitalWrite(rightT, LOW);
digitalWrite(turnR, LOW);
TurnRight = TurnRight + 1;
delay(timer);
}
TurnRight = 0;
delay(d);
myCom="";
}
// Flashers
if(myCom == "Flashers"){
Serial.println("Flashers Are On");
while(Flashing < 10){
digitalWrite(rightT, HIGH);
digitalWrite(turnR, HIGH);
digitalWrite(leftT, HIGH);
digitalWrite(turnL, HIGH);
delay(timer);
digitalWrite(rightT, LOW);
digitalWrite(turnR, LOW);
digitalWrite(leftT, LOW);
digitalWrite(turnL, LOW);
Flashing = Flashing + 1;
delay(timer);
}
Flashing = 0;
delay(d);
myCom="";
}
// Breaks
if(myCom == "Breaks" &&PowerIsOn == 1){
Serial.println("Breaks are on");
digitalWrite(rightT, HIGH);
digitalWrite(leftT, HIGH);
delay(2500);
digitalWrite(rightT, LOW);
digitalWrite(leftT, LOW);
myCom="";
}
//Test
if(myCom == "Test" && PowerIsOn == 0){
Serial.println("Testing Is In Session");
digitalWrite(turnR, HIGH);
delay(timer);
digitalWrite(leftT, HIGH);
delay(timer);
digitalWrite(turnL, HIGH);
delay(timer);
digitalWrite(rightT, HIGH);
delay(timer);
digitalWrite(highB, HIGH);
delay(timer);
digitalWrite(lights, HIGH);
delay(timer);
digitalWrite(power, HIGH);
delay(1000);
digitalWrite(turnR, LOW);
delay(timer);
digitalWrite(leftT, LOW);
delay(timer);
digitalWrite(turnL, LOW);
delay(timer);
digitalWrite(rightT, LOW);
delay(timer);
digitalWrite(highB, LOW);
delay(timer);
digitalWrite(lights, LOW);
delay(timer);
digitalWrite(power, LOW);
delay(d);
myCom="";
}
// Flash To Pass
if(myCom == "ftp" && PowerIsOn == 1 && HighOn == 0){
Serial.println("Flash To Pass");
while(flash < 2){
digitalWrite(highB, HIGH);
delay(250);
digitalWrite(highB, LOW);
delay(150);
flash = flash +1;
}
flash = 0;
myCom="";
}
}