Concept:
In my home town, we don’t usually have automatic traffic lights for pedestrian (zebra) crossings. When I came to the UAE, I found it really interesting that many crossings have a touch-sensitive button on the pole, when a pedestrian presses it, the system detects the request and changes the traffic light to red for vehicles, allowing people to cross safely.
![]()
I wanted to mimic that concept using simple electronic components. In my prototype, a light sensor (LDR) acts as the pedestrian touch detector. When I place my finger over the sensor, “green” light turns on (in my case, a blue LED, since my green ones were damaged), signaling that a pedestrian wants to cross. When the sensor is not covered, meaning the LDR value stays above a certain threshold (around 400), it represents that no one is waiting to cross, so the “red” light for pedestrians remains on.
Additionally, I included a digital switch that simulates a traffic officer controlling the lights manually. Whey they clicked the red button, red light turns on and force they vehicle to stop.
Video:
Code:
const int LDR= A2;
const int LDR_LED=10;
const int red_LDR=8;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int value= analogRead(LDR);
Serial.println(value);
if(value<=500){
digitalWrite(LDR_LED,HIGH);
Serial.println("yes");
digitalWrite(red_LDR,LOW);
}
else{
digitalWrite(LDR_LED,LOW);
digitalWrite(red_LDR,HIGH);
}
}
Schematics:

