// Define pins for each road
// Define pins for each road
#define R1 0
#define Y1 1
#define G1 2
#define R2 28
#define Y2 27
#define G2 26
#define R3 22
#define Y3 21
#define G3 20
#define R4 13
#define Y4 14
#define G4 15
void setup() {
// Set all pins as output
pinMode(R1, OUTPUT); pinMode(Y1, OUTPUT); pinMode(G1, OUTPUT);
pinMode(R2, OUTPUT); pinMode(Y2, OUTPUT); pinMode(G2, OUTPUT);
pinMode(R3, OUTPUT); pinMode(Y3, OUTPUT); pinMode(G3, OUTPUT);
pinMode(R4, OUTPUT); pinMode(Y4, OUTPUT); pinMode(G4, OUTPUT);
// Start with all Red ON
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(R3, HIGH);
digitalWrite(R4, HIGH);
}
// Helper function for one road cycle
void roadCycle(int R, int Y, int G) {
// All roads Red
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(R3, HIGH);
digitalWrite(R4, HIGH);
// Allow this road
digitalWrite(R, LOW); // Red OFF
digitalWrite(G, HIGH); // Green ON
delay(3000);
digitalWrite(G, LOW);
digitalWrite(Y, HIGH); // Yellow ON
delay(1000);
digitalWrite(Y, LOW);
digitalWrite(R, HIGH); // Back to Red
}
void loop() {
roadCycle(R1, Y1, G1);
roadCycle(R2, Y2, G2);
roadCycle(R3, Y3, G3);
roadCycle(R4, Y4, G4);
}
/*from machine import Pin
import time
//# Define pins for each road
R1 = Pin(0, Pin.OUT)
Y1 = Pin(1, Pin.OUT)
G1 = Pin(2, Pin.OUT)
R2 = Pin(28, Pin.OUT)
Y2 = Pin(27, Pin.OUT)
G2 = Pin(26, Pin.OUT)
R3 = Pin(22, Pin.OUT)
Y3 = Pin(21, Pin.OUT)
G3 = Pin(20, Pin.OUT)
R4 = Pin(13, Pin.OUT)
Y4 = Pin(14, Pin.OUT)
G4 = Pin(15, Pin.OUT)
//# Start with all Red ON
R1.value(1)
R2.value(1)
R3.value(1)
R4.value(1)
def road_cycle(R, Y, G, delay_green=3, delay_yellow=1):
//# Turn all roads Red
R1.value(1); R2.value(1); R3.value(1); R4.value(1)
//# Allow this road
R.value(0)
G.value(1)
time.sleep(delay_green)
G.value(0)
Y.value(1)
time.sleep(delay_yellow)
Y.value(0)
R.value(1)
//# Main loop
while True:
road_cycle(R1, Y1, G1)
road_cycle(R2, Y2, G2)
road_cycle(R3, Y3, G3)
road_cycle(R4, Y4, G4)*/