Перейти к содержанию

Как сделать светофор на Ардуино с кнопкой

Как сделать светофор на Ардуино с кнопкой

Сделать светофор на Ардуино с кнопкой — это отличное упражнение по изучению Arduino для начинающих. Проект позволит лучше понять среду программирования Arduino IDE и принцип работы цифровых выводов общего назначения. Рассмотрим схему сборки простого светофора на Arduino Uno с использованием макетной платы (breadboard) и представим простой проект, который можно использовать в начале своего обучения.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • светодиоды и резисторы
  • тактовая кнопка
  • макетная плата
  • коннекторы

Дополнительные материалы на эту тему:

  1. Поочередное включение светодиодов от Ардуино
  2. Включение светодиода от кнопки с Ардуино
  3. Мигание светодиодом от Ардуино (мигалка)

После сборки проекта, вы можете самостоятельно реализовать мигающий зеленый свет светофора в программе. Также проект можно улучшить усовершенствовать, заменив кнопку на ультразвуковой дальномер hc-sr04. Пины с подключенными светодиодами названы с помощью директивы define, а интервал включения света можно изменить, изменив значение переменной int pause = 3000; в представленной программе.

Схема светофора на Ардуино Уно или Нано

Схема светофора на Ардуино Уно или Нано

Для начала мы соберем простую схему светофора на макетной плате без тактовой кнопки, чтобы понять код и алгоритм работы светофоров на перекрестках. Детям также будет полезно понять, как работают светофоры на дороге в реальной жизни. Подключите светодиоды с помощью макетной платы и коннекторов к плате Arduino согласно размещенной выше схеме и загрузите в микроконтроллер следующую программу.

Скетч для светофора со светодиодами на Arduino


#define RED1    2
#define ORANGE1 3
#define GREEN1  4
#define RED2    9
#define ORANGE2 10
#define GREEN2  11

int pause = 3000;

void setup() {
   pinMode(RED1, OUTPUT);
   pinMode(ORANGE1, OUTPUT);
   pinMode(GREEN1, OUTPUT);
   pinMode(RED2, OUTPUT);
   pinMode(ORANGE2, OUTPUT);
   pinMode(GREEN2, OUTPUT);
}

void loop() {
   digitalWrite(RED1, HIGH);
   digitalWrite(ORANGE1, LOW);
   digitalWrite(GREEN1, LOW);
   digitalWrite(RED2, LOW);
   digitalWrite(ORANGE2, LOW);
   digitalWrite(GREEN2, HIGH);
   delay(pause);

   digitalWrite(RED1, HIGH);
   digitalWrite(ORANGE1, HIGH);
   digitalWrite(GREEN1, LOW);
   digitalWrite(RED2, LOW);
   digitalWrite(ORANGE2, HIGH);
   digitalWrite(GREEN2, LOW);
   delay(pause);

   digitalWrite(RED1, LOW);
   digitalWrite(ORANGE1, LOW);
   digitalWrite(GREEN1, HIGH);
   digitalWrite(RED2, HIGH);
   digitalWrite(ORANGE2, LOW);
   digitalWrite(GREEN2, LOW);
   delay(pause);

   digitalWrite(RED1, LOW);
   digitalWrite(ORANGE1, HIGH);
   digitalWrite(GREEN1, LOW);
   digitalWrite(RED2, HIGH);
   digitalWrite(ORANGE2, HIGH);
   digitalWrite(GREEN2, LOW);
   delay(pause);
}

Как сделать светофор с кнопкой на Arduino

Как сделать светофор с кнопкой на Arduino

Следующий пример воспроизводит работу светофоров на пешеходных переходах, где режим работы светофора изменяется нажатием кнопки. Для этого программе необходимо использовать цикл while. Также необходимо добавить в схему кнопку с подтягивающим резистором и активировать режим светофора при высоком уровне сигнала на цифровом или аналоговом входе микроконтроллера, к которому была подключена кнопка.

Скетч для светофора с кнопкой на Arduino Uno

#define RED1    2
#define ORANGE1 3
#define GREEN1  4
#define RED2    9
#define ORANGE2 10
#define GREEN2  11
#define BOUTON  7
int pause = 3000;

void setup() {
   pinMode(RED1, OUTPUT);
   pinMode(ORANGE1, OUTPUT);
   pinMode(GREEN1, OUTPUT);
   pinMode(RED2, OUTPUT);
   pinMode(ORANGE2, OUTPUT);
   pinMode(GREEN2, OUTPUT);
   pinMode(BOUTON, INPUT);
}

void loop() {
   digitalWrite(RED1, HIGH);
   digitalWrite(ORANGE1, LOW);
   digitalWrite(GREEN1, LOW);
   digitalWrite(RED2, LOW);
   digitalWrite(ORANGE2, LOW);
   digitalWrite(GREEN2, HIGH);

while (digitalRead(BOUTON) == HIGH) {
      digitalWrite(RED1, HIGH);
      digitalWrite(ORANGE1, HIGH);
      digitalWrite(GREEN1, LOW);
      digitalWrite(RED2, LOW);
      digitalWrite(ORANGE2, HIGH);
      digitalWrite(GREEN2, LOW);
      delay(pause);

      digitalWrite(RED1, LOW);
      digitalWrite(ORANGE1, LOW);
      digitalWrite(GREEN1, HIGH);
      digitalWrite(RED2, HIGH);
      digitalWrite(ORANGE2, LOW);
      digitalWrite(GREEN2, LOW);
      delay(pause);

      digitalWrite(RED1, LOW);
      digitalWrite(ORANGE1, HIGH);
      digitalWrite(GREEN1, LOW);
      digitalWrite(RED2, HIGH);
      digitalWrite(ORANGE2, HIGH);
      digitalWrite(GREEN2, LOW);
      delay(pause);
   }
}

Заключение. В программе цикл while будет выполняться только при нажатии кнопки. Всем портам со светодиодами и пину с кнопкой присвоены имена с помощью команды #define. Сейчас вы можете реализовать мигающий зеленый свет светофора в программе самостоятельно или еще больше усовершенствовать проект с мигающим светофором, заменив тактовую кнопку на датчик hc-sr04 ультразвукового дальномера Ардуино.

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

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

newzaym
➜