Проект 2. Уличный светофор
Мы запрограммируем модуль TrafficLight, в режиме реального светофора! Сначала это будет самый простой режим, а потом реализуем более сложный: с мигающим зелёным сигналом А также мы изучим что такое библиотека, и как она помогает сделать программирование более простым!
Программирование:
Библиотека Eryoma
Практика
Запрограммируйте модуль TrafficLight на работу в следующем режиме:
- включить красный светодиод
- ожидание 10 секунд
- выключить красный светодиод
- включить желтый светодиод
- подождать 2 секунды
- выключить желтый светодиод
- включить зелёный светодиод
- подождать 10 секунд
- выключить зелёный светодиод
- включить желтый светодиод
- подождать 2 секунды
- выключить желтый светодиод
Дополнительное задание
Измените режим работы светофора на более сложный
- красный цвет (10сек)
- красный + желтый (2сек)
- зеленый (10сек)
- зелёный мигающий (3 мигания)
- жёлтый (2сек)
Решение
Мы рекомендуем сначала освоить материал и попробовать сделать программу самостоятельно! А потом проверить себя, посмотрев наш вариант решения:
Основная программа
#include <Eryoma.h> // Подключаем библиотеку
Eryoma eryoma; // Создаём экземпляр класса Eryoma
void setup() {
eryoma.setupConnector(ePort1, TrafficLight); // Указываем, что на 1 порте подключен модуль TrafficLight
}
void loop() {
eryoma.write(ePort1, 0, 0, 255); // Включаем на 1 порте красный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(10000); // Задержка 10000 мс (1 сек = 1000 мс)
eryoma.write(ePort1, 0, 255, 0); // Включаем на 1 порте жёлтый светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(2000); // Задержка 2000 мс
eryoma.write(ePort1, 255, 0, 0); // Включаем на 1 порте зелёный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(10000); // Задержка 10000 мс
eryoma.write(ePort1, 0, 255, 0); // Включаем на 1 порте зелёный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(2000); // Задержка 2000 мс
}
Дополнительное задание
#include <Eryoma.h> // Подключаем библиотеку
Eryoma eryoma; // Создаём экземпляр класса Eryoma
void setup() {
eryoma.setupConnector(ePort1, TrafficLight); // Указываем, что на 1 порте подключен модуль TrafficLight
}
void loop() {
eryoma.write(ePort1, 0, 0, 255); // Включаем на 1 порте красный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(10000); // Задержка 10000 мс
eryoma.write(ePort1, 0, 255, 255);// Включаем на 1 порте красный и жёлтый светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(2000); // Задержка 2000 мс
eryoma.write(ePort1, 255, 0, 0); // Включаем на 1 порте зелёный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(10000); // Задержка 10000 мс
eryoma.write(ePort1, 0, 0, 0); // Выключаем на 1 порте все светодиоды
delay(1000); // Задержка 1000 мс
eryoma.write(ePort1, 255, 0, 0); // Включаем на 1 порте зелёный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(1000); // Задержка 1000 мс
eryoma.write(ePort1, 0, 0, 0); // Выключаем на 1 порте все светодиоды
delay(1000); // Задержка 1000 мс
eryoma.write(ePort1, 255, 0, 0); // Включаем на 1 порте зелёный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(1000); // Задержка 1000 мс
eryoma.write(ePort1, 0, 0, 0); // Выключаем на 1 порте все светодиоды
delay(1000); // Задержка 1000 мс
eryoma.write(ePort1, 255, 0, 0); // Включаем на 1 порте зелёный светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(1000); // Задержка 1000 мс
eryoma.write(ePort1, 0, 255, 0); // Включаем на 1 порте жёлтый светодиод с заданной яркостью(от 0 до 255), остальные выключаем
delay(2000); // Задержка 2000 мс
}