#include <IRremote.h>
const int irReceiverPin = 12;
const int redPin = 2;
const int yellowPin = 3;
const int greenPin = 4;
int phase = 0;
IRrecv irReceiver(irReceiverPin);
void setup() {
irReceiver.begin(irReceiverPin);
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (irReceiver.decode()) {
handleIR();
irReceiver.resume();
}
}
void handleIR() {
phase = (phase + 1) % 4;
digitalWrite(redPin, phase == 1);
digitalWrite(yellowPin, phase == 2);
digitalWrite(greenPin, phase == 3);
if (phase == 0) {
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
}
}