Текущее время: 28 мар 2024, 19:32

Калининград & ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

Урок 4. Светофор на Ардуино

Обучение с нуля, шаг за шагом.
Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Урок 4. Светофор на Ардуино

Сообщение -=dp=- » 08 мар 2018, 19:50

Урок 4. Светофор на Ардуино

Для создания светофора на Ардуино нам понадобятся следующие компоненты:

1 - плата совместимого контроллера Ардуино УНО
2 - макетная плата
3 - светодиоды 3 шт (красный, желтый, зеленый)
4 - резисторы 560 Ом 3 шт
5 - соединительные провода

Собираем схему на макетной плате как показано на рисунке ниже:

Arduino UNO svetofor.jpg
Светофор на Ардуино , схема


Запускаем среду разработки Ардуино IDE.
Для разработки программы или скетча светофора, за основу берем скетч Blink.
Дорабатываем скетч следующим образом:
В установочном цикле прописываем цифровые выводы 5,6,7 как выходы.

В главном цикле программы формируем следующий алгоритм работы нашего светофора:

:arrow: Подаем на цифровой выход 5 высокий уровень HIGHT, Загорается зеленый светодиод, горит 60 секунд, затем мигает 3 раза с интервалом 0,5 сек, отключаем зеленый светодиод, устанавливаем выход 5 в LOW.

:arrow: Подаем на цифровой выход 6 высокий уровень HIGHT, Включаем желтый светодиод на 3 секунды, устанавливаем выход 6 в LOW, желтый светодиод гаснет.

:arrow: Подаем на цифровой выход 7 высокий уровень HIGHT, Загорается красный светодиод, горит 55 секунд,
Подаем на цифровой выход 6 высокий уровень HIGHT, Включаем желтый светодиод на 5 секунд и выключаем красный и желтый, устанавливаем выход 6, 7 в LOW.

:arrow: И опять зеленый, и так по циклу.

Пример кода:

Код: выделить все
// Урок 4. Светофор на Ардуино (C) www.forklg.ru
void setup() {
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(5, HIGH);   //  зеленый
  delay(60000);                       
  digitalWrite(5, LOW);
  delay(500);   
  digitalWrite(5, HIGH);   
  delay(500);
  digitalWrite(5, LOW);     
  delay(500);   
  digitalWrite(5, HIGH);   
  delay(500);
  digitalWrite(5, LOW);
  delay(500);   
  digitalWrite(5, HIGH);   
  delay(500);
  digitalWrite(5, LOW);
 
  digitalWrite(6, HIGH);   //  желтый   
  delay(3000);   
  digitalWrite(6, LOW);   
 
  digitalWrite(7, HIGH);   //  красный
  delay(55000);
  digitalWrite(6, HIGH);   //  желтый   
  delay(5000);                 
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
// переход в начало цикла
}



Алгоритм работы светофора скопирован с реального светофора на перекрестке ;)



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 4. Светофор на Ардуино

Сообщение -=dp=- » 12 ноя 2019, 14:17

Видео урок - Светофор на Ардуино

https://youtu.be/GiAafft4X_o

обложка_светофор.jpg
Светофор на Ардуино



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

3D модель корпуса для светофора

Сообщение -=dp=- » 12 ноя 2019, 14:25

3D модель корпуса для светофора

Создал 3D модели корпуса для светофора на Ардуино
В подставке будет размещен контроллер Ардуино НАНО
Подключаться светофор будет USB кабелем к ПК

1.jpg
Светофор STL 3D
1.jpg (36.08 KiB) Просмотров: 12498

2.jpg
3Д модель светофора

3.jpg
3D модель корпуса для светофора
3.jpg (33.25 KiB) Просмотров: 12498



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

3Д корпус светофора

Сообщение -=dp=- » 12 ноя 2019, 14:27

3D модель корпуса для светофора в сборе :idea:

svetofor_sborka.jpg
Корпус для светофора 3Д


:ugeek:



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 4. Светофор на Ардуино

Сообщение -=dp=- » 19 ноя 2019, 23:07

:idea:
Светофор вер. 2.0
Traffic Lights v 2.0
:mrgreen:
Скетч
Sketch
:arrow:
Код: выделить все
// traffic lights v2.0 (C) forklg.ru

int vremyadv=10000;

void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  digitalWrite(2, LOW);   
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);   
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);   
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);   
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);

}

void loop() {
 //-----red------------------
 digitalWrite(2, HIGH);   //r
 digitalWrite(4, HIGH);  //r
 digitalWrite(3, LOW);  //r
 digitalWrite(7, LOW);  // r
 digitalWrite(10, HIGH);  //g
 digitalWrite(5, HIGH);  // g
 digitalWrite(12, LOW); //g
 digitalWrite(11, LOW);  //g
 delay(vremyadv);
   //----green 1 mig start------------------
 digitalWrite(10, LOW); //g
 digitalWrite(5, LOW);  //g
 delay(700);
 digitalWrite(10, HIGH); //g
 digitalWrite(5, HIGH);  //g
 delay(700);
 digitalWrite(10, LOW); //g
 digitalWrite(5, LOW);  //g
 delay(700);
 digitalWrite(10, HIGH); //g
 digitalWrite(5, HIGH);  //g
 delay(700);
 digitalWrite(10, LOW); //g
 digitalWrite(5, LOW);  //g
 delay(700);
 digitalWrite(10, HIGH); //g
 digitalWrite(5, HIGH);  //g
 delay(700);
 digitalWrite(10, LOW); //g
 digitalWrite(5, LOW);  //g
 //----green 1 mig end------------------
 //------yellow-------------------
 digitalWrite(5, LOW); //g
 digitalWrite(10, LOW);  //g
 digitalWrite(12, LOW); //g
 digitalWrite(11, LOW);  //g
 digitalWrite(8, HIGH);   //y
 digitalWrite(6, HIGH);  //y
 digitalWrite(9, HIGH);   //y
 digitalWrite(13, HIGH);   //y
 delay(3000);
 digitalWrite(8, LOW);   //y
 digitalWrite(6, LOW);  //y
 digitalWrite(9, LOW);   //y
 digitalWrite(13, LOW);   //y
 //------green--------------------------
 digitalWrite(12, HIGH); //g
 digitalWrite(11, HIGH);  //g
 digitalWrite(2, LOW);   //r
 digitalWrite(4, LOW);  //r
 digitalWrite(3, HIGH);  //r
 digitalWrite(7, HIGH);  //r
 delay(vremyadv);
   //----green 2 mig start------------------
 digitalWrite(12, LOW); //g
 digitalWrite(11, LOW);  //g
 delay(700);
  digitalWrite(12, HIGH); //g
 digitalWrite(11, HIGH);  //g
 delay(700);
 digitalWrite(12, LOW); //g
 digitalWrite(11, LOW);  //g
  delay(700);
  digitalWrite(12, HIGH); //g
 digitalWrite(11, HIGH);  //g
 delay(700);
 digitalWrite(12, LOW); //g
 digitalWrite(11, LOW);  //g
  delay(700);
  digitalWrite(12, HIGH); //g
 digitalWrite(11, HIGH);  //g
 delay(700);
 digitalWrite(12, LOW); //g
 digitalWrite(11, LOW);  //g
 //----green 2 mig end------------------

 //------yellow-------------------
 digitalWrite(8, HIGH);   //y
 digitalWrite(6, HIGH);  //y
 digitalWrite(9, HIGH);   //y
 digitalWrite(13, HIGH);   //y
 delay(3000);
 digitalWrite(8, LOW);   //y
 digitalWrite(6, LOW);  //y
 digitalWrite(9, LOW);   //y
 digitalWrite(13, LOW);   //y
 digitalWrite(5, LOW); //g
 digitalWrite(10, LOW);  //g
 digitalWrite(12, LOW); //g
 digitalWrite(11, LOW);  //g
}




Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

traffic circuit electrical schematic

Сообщение -=dp=- » 20 ноя 2019, 11:01

схема светофора вер. 2.0
traffic circuit electrical schematic v.2.0

traffic light.jpg
traffic circuit electrical schematic



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 4. Светофор на Ардуино

Сообщение -=dp=- » 20 ноя 2019, 14:47

3Д модель светофора для печати на 3Д принтере
можно скачать тут

:arrow: https://www.thingiverse.com/thing:3988668

traffic light 3d model.jpg
3Д модель светофора



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 4. Светофор на Ардуино

Сообщение -=dp=- » 20 ноя 2019, 14:54

Выложил полное видео по изготовлению светофора на Ардуино

https://youtu.be/ypcaBGKPlik

traffic light video.jpg
видео по изготовлению светофора на Ардуино




Вернуться в Обучение Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2