Неожиданное поведение светодиодов в четырехсторонней системе дорожного движения с ArduinoC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Неожиданное поведение светодиодов в четырехсторонней системе дорожного движения с Arduino

Сообщение Anonymous »

Я новичок в Arduino. Я хотел создать четырехходовую систему светофоров, используя Arduino и два восьмибитных сдвиговых регистра. Я заметил странное поведение двух моих «дорог», подключенных ко второму сдвиговому регистру. В конечном итоге эта схема будет включать в себя ИК-датчики, но сейчас я использую последовательность по умолчанию для проверки своего кода.

Код: Выделить всё

// 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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»