Simulate a real intersection with timed red-yellow-green cycles and an optional pedestrian button.
Traffic lights are a perfect real-world model for learning state machines. Each light (Red, Yellow, Green) represents a state, and transitions happen on a timer — or when a button is pressed.
What you'll learn: Multiple digital outputs, timing sequences, button input with debouncing, and basic state machine logic.
Estimated time: 45–60 minutes. Difficulty: ⭐⭐ Easy.
| Component | Specification | Qty | Notes |
|---|---|---|---|
| Arduino Uno R3 | ATmega328P, 5V | 1 | |
| Red LED | 5mm, 2V 20mA | 1 | |
| Yellow LED | 5mm, 2V 20mA | 1 | |
| Green LED | 5mm, 2V 20mA | 1 | |
| Resistors | 220Ω | 3 | One per LED |
| Push Button | Momentary SPST | 1 | Pedestrian button |
| Resistor | 10kΩ pull-down | 1 | For button |
| Breadboard + Wires | Standard | 1 |
// Smart Traffic Light — Volt X
const int RED = 8, YELLOW = 9, GREEN = 10;
const int BUTTON = 2;
void setup() {
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BUTTON, INPUT);
}
void setLight(int r, int y, int g) {
digitalWrite(RED, r);
digitalWrite(YELLOW, y);
digitalWrite(GREEN, g);
}
void loop() {
// Green phase
setLight(LOW, LOW, HIGH);
for (int i = 0; i < 50; i++) {
if (digitalRead(BUTTON) == HIGH) break;
delay(100);
}
// Yellow phase
setLight(LOW, HIGH, LOW);
delay(2000);
// Red phase
setLight(HIGH, LOW, LOW);
delay(5000);
}