Код: Выделить всё
// Pin Definitions
const int dataPin = 10; // DS
const int clockPin = 8; // SH_CP
const int latchPin = 9; // ST_CP
// Sensors
const int sensor1 = A0, sensor2 = A1, sensor3 = A2, sensor4 = A3;
// LED States (12 LEDs controlled via 2 shift registers)
byte road1 = 0b001; // Red: 1, Yellow: 0, Green: 0
byte road2 = 0b001;
byte road3 = 0b001;
byte road4 = 0b001;
void setup() {
// Setup Serial monitor
Serial.begin(9600);
// Shift register pins
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
// Sensor pins
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
pinMode(sensor4, INPUT);
}
void loop() {
defaultSequence();
}
void updateTraffic(int road) {
// Set all roads to red
road1 = 0b001; road2 = 0b001; road3 = 0b001; road4 = 0b001;
// Update the road based on priority
switch (road) {
case 1: road1 = 0b100; break; // Green for Road 1
case 2: road2 = 0b100; break; // Green for Road 2
case 3: road3 = 0b100; break; // Green for Road 3
case 4: road4 = 0b100; break; // Green for Road 4
}
writeShiftRegisters();
delay(10000); // Green light duration
setYellow(road);
//delay(1000);
//setRed(road);
}
void setYellow(int road) {
// Set the selected road to yellow
switch (road) {
case 1: road1 = 0b010; break;
case 2: road2 = 0b010; break;
case 3: road3 = 0b010; break;
case 4: road4 = 0b010; break;
}
writeShiftRegisters();
delay(2000); // Yellow light duration
}
void setRed(int road) {
// Set the selected road to red
switch (road) {
case 1: road1 = 0b001; break;
case 2: road2 = 0b001; break;
case 3: road3 = 0b001; break;
case 4: road4 = 0b001; break;
}
writeShiftRegisters();
}
void defaultSequence() {
for (int i = 1; i
Подробнее здесь: [url]https://stackoverflow.com/questions/79235398/unexpected-behavior-of-leds-in-a-four-way-traffic-system-with-arduino[/url]