Автомобильный и пешеходных светофор на Arduino

Простая схема светофора для синхронизированной регулировки автомобильного и пешеходного трафика.

Свеофор на Arduino

Комплектующие

Все необходимые комплектующие и даже чуть больше есть в минимальном стартовом наборе Arduino — https://bit.ly/2QgTPvF​

  1. Arduino Uno — https://bit.ly/2P3rCI5​
  2. беспаечная макетная плата — https://bit.ly/3goWOwQ​
  3. светодиоды — https://bit.ly/3swTa6t​
  4. ограничивающий резистор — 220 Ом или аналогичный — https://bit.ly/3swTpyp​
  5. провода папа-папа, мама-мама, папа-мама 10-30 см — https://bit.ly/3n3z0jl​

Схема подключения

Схема светофора на Arduino.

Скетч

Светофор на Arduino управляет простым скетчем, который можно персонализировать под себя. Строки 22, 27 и 31 задают время свечения того или иного из цветов в миллисекундах.

Мигание зелёных задаётся функцией blinkLed (int pinLed), которая два раза вызывается в алгоритме светофора. В самой функции также можно изменять частоту и длительность мигания.

Дополнительные подробности указаны в комментариях в скетче.

// Светофор.

int red = 13;                   // Объявляем переменные.
int yellow = 12;
int green = 11;
int redP = 10;
int greenP = 9;

void setup()
{
  pinMode (red, OUTPUT);        // Делаем пины со светодиодами ВЫХОДОМ.
  pinMode (yellow, OUTPUT);
  pinMode (green, OUTPUT);
  pinMode (redP, OUTPUT);
  pinMode (greenP, OUTPUT);
}

void loop()
{
  digitalWrite (red, HIGH);     // Включаем красный автомобильный.
  digitalWrite (greenP, HIGH);  // Включаем зелёный пешеходный.
  delay (7000);                 // Время ожидания.
  blinkLed (greenP);            // Вызываем функцию мигания зелёного пешеходного.
  digitalWrite (greenP, LOW);   // Выключаем зелёный пешеходный.
  digitalWrite (redP, HIGH);    // Включаем красный пешеходный.
  digitalWrite (yellow, HIGH);  // Включаем жёлый.
  delay (3000);                 // Время ожидания.
  digitalWrite (red, LOW);      // Выключаем красный автомобильный.
  digitalWrite (yellow, LOW);   // Выключаем жёлтый.
  digitalWrite (green, HIGH);   // Включаем зелёный автомобильный.
  delay (7000);                 // Время ожидания.
  blinkLed (green);             // Вызываем функцию мигания зелёного автомобильного.
  digitalWrite (green, LOW);    // Выключаем зелёный авмтобильный.
  digitalWrite (yellow, HIGH);  // Включаем жёлтый
  delay (3000);                 // Время ожидания.
  digitalWrite (redP, LOW);     // Выключаем красный пешеходный.
  digitalWrite (yellow, LOW);   // Выключаем жёлтый.
}

void blinkLed (int pinLed) {      // Функция мигания.
  for (int i = 0; i <= 4; i++) {  // 4 - сколько раз надо мигнуть.
    digitalWrite (pinLed, LOW);
    delay (200);                  // Как часто мигать.
    digitalWrite (pinLed, HIGH);
    delay (200);
  }                               // Как часто мигать.
}

Видео

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *