Помогите, пожалуйста, с режимами светофоров через ИК пульт!

artur769
Offline
Зарегистрирован: 04.11.2018

Здравствуйте! 
Помогите, пожалуйста, с кодом управления через ИК пульт! Нужно сделать режмы на кнопки.

Пульт стандартный, ИК датчик тоже, Arduino UNO. Делаю макет по ПДД, в нем система светофоров, а именно: 2 перекрестка и регулируемый пешеходный переход. Логика управления довольно простая: ардуино через 6 силовых ключей (модули на основе IRF520) управляет 6 "линиями" светодиодов: вертикальные и горизонтальные цвета светофоров (красный, желтый, зеленый).

Схема собрана, с этим все ок. Обычную программу, правда через delay сделал.

Нужно на пульт сделать режимы:

1) обычный режим, т.е. обычная работа перекрестков;

2) ночной (аварийный) режим светофоров, когда мигают желтые сигналы;

3) остановка в текущем положении сигналов И:

3.1) переход к следующему/предыдущему положению у перекрестков;

3.2) выход из режима остановки;

4) какую-то команду, чтобы возвращаться в обычный режим

Режим работы светофоров реалистичный, т.е., когда загорается по горизонтали красный, то вертикаль только через какое-то время переходит от красного к красному+желтый и потом зеленый.

Не рассчитал силы и время, с самим макетом было много заморочек, я, естественно, полный новичек, как нетрудно догадаться. Времени осталось совсем немного.

Библиотеку IRRemote установил, но, блин, нифига не получается, даже мигающий сигнал просто сделать, там все либо просто горит, либо горит и гаснет, либо мигнет и гаснет.

Если не кодом, то хотя бы дайте подробное направление: что? где? когда?

 

Помогите, пожалуйста, ребята, горшки горят!


  
  int car_red = 12;
  int car_yellow = 11;
  int car_green = 10;
  int people_red = 9;
  int people_yellow = 8;
  int people_green = 7;
   
void setup() {
  pinMode (car_red, OUTPUT);
  pinMode (car_yellow, OUTPUT);
  pinMode (car_green, OUTPUT);
  pinMode (people_red, OUTPUT);
  pinMode (people_yellow, OUTPUT);
  pinMode (people_green, OUTPUT);
  
  }
 
void loop() {
  People (HIGH,LOW,LOW);
  delay (2500);
  Car (LOW,HIGH,LOW);
  delay(3000);
  Car (HIGH, LOW, LOW);
  delay (2500);
  People (HIGH,HIGH,LOW);
  delay (2000);
  People (LOW, LOW, HIGH);
  delay (5000);
  //
  for (int x=0; x<4; x++) {
    People (LOW, LOW, HIGH);
    delay (500);
    People (LOW, LOW, LOW);
    delay (500);
  }
  People (LOW, HIGH, LOW);
  delay (2500);
  People (HIGH,LOW,LOW);
  delay (3000);
  Car (HIGH,HIGH,LOW);
  delay (2000);
  Car (LOW,LOW,HIGH);
  delay (2000);
  Car (LOW, LOW, HIGH);
  delay (10000); 
  //
  for (int x=0; x<4; x++) {
    Car (LOW, LOW, HIGH);
    delay (500);
    Car (LOW, LOW, LOW);
    delay (500);
  }
}

void Car (byte red, byte yellow, byte green) {
  digitalWrite (car_red, red);
  digitalWrite (car_yellow, yellow);
  digitalWrite (car_green, green);
}

void People (byte red, byte yellow, byte green) {
  digitalWrite (people_red, red);
  digitalWrite (people_yellow, yellow);
  digitalWrite (people_green, green);
}
 
 

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

#258

artur769 пишет:
Если не кодом, то хотя бы дайте подробное направление: что? где? когда?

У вас два пути https://www.youtube.com/watch?v=GSCTKktSYiU