Данная статья имеет шуточный характер. На самом деле я заказал случайно не тот модуль (хотел RGB модуль, а взял RYG модуль), потом решил, раз я его взял сделаю учебный проект.
ESP8266
Собственно это первая версия светофора на Arduino и ESP8266. Странно, конечно, получилось такой мощный микроконтроллер использовать для такой задачи, но проект учебный, так чтобы да?

Сам проект находится в общем доступе тут https://github.com/Levon24/esp8266-traffic-light/ и работает он не совсем верно по логике переключения, но для учебного проекта, наверное, подойдет.
Для начала определяем к каким контактам какой цвет подсоединяется. Удобнее всего было подсоединить модуль светофора к GPIO 13 (красный), GPIO 12 (желтый) и GPIO 14 (зеленый).

const byte redLedPin = 14; const byte yelowLedPin = 12; const byte greenLedPin = 13;
Собственно выше по коду и определены контакты к которым подсоединены светодиоды через отграничивающие резисторы. Далее пины настраиваем на выход кодом ниже.
void setup() { pinMode(redLedPin, OUTPUT); pinMode(yelowLedPin, OUTPUT); pinMode(greenLedPin, OUTPUT); }
Основной алгоритм расположен в основном цикле, начиная с красного цвета.
Зажигаем красный цвет, ждем 5 секунд.
Зажигаем желтый цвет, ждем 1 секунду.
Гасим красный и желтый сигнал
Зажигаем зеленый цвет, ждем 5 секунд.
В цикле 3 раза мигаем зеленым цветом.
Зажигаем желтый цвет, ждем 1 секунду и гасим его.
void loop() { // red digitalWrite(redLedPin, HIGH); delay(5000); // yelow digitalWrite(yelowLedPin, HIGH); delay(1000); digitalWrite(redLedPin, LOW); digitalWrite(yelowLedPin, LOW); // green digitalWrite(greenLedPin, HIGH); delay(5000); for (byte i = 0; i < 3; i++) { digitalWrite(greenLedPin, HIGH); delay(500); digitalWrite(greenLedPin, LOW); delay(500); } // yelow digitalWrite(yelowLedPin, HIGH); delay(1000); digitalWrite(yelowLedPin, LOW); }
Подключается ESP8266 к PC через обычный USB шнурок и для USB-COM ставится драйвер, потом ставится Arduino и подключается репозиторий esp8266, инструкцию можно найти в интернете, например, тут: https://wiki.iarduino.ru/page/wemos_start/.
CH32V003
Ниже представлен вариант на CH32V003 как более бюджетном варианте. Однако для его прошивки потребуется программатор WCH LinkE для подключения и прошивки. USB разъем на плате для питания. Собственно на фотографии ниже и показано подключение программатора с питанием.

В данном случае, удобнее было подсоединить сигналы светофора к линиям порта С.
Красный свет соединен порт С pin 5.
Желтый свет соединен порт С pin 6.
Зеленый свет соединен порт С pin 7.
/* Global define */ #define RED_LED_PIN GPIO_Pin_5 #define YELLOW_LED_PIN GPIO_Pin_6 #define GREEN_LED_PIN GPIO_Pin_7
Исходники проекта находятся тут https://github.com/Levon24/ch32v003-traffic-light и доступны для самостоятельного изучения. Код аналогичен коду на Arduino, но со своими особенностями.
Заключение
Собственно случайная покупка не того модуля дала дорогу 2 учебным проектам. Делались они скорее ради забавы, чтобы кто боится делать свои первые шаги в программировании мог бы заказать детали и повторить домашний светофор у себя дома. Всем мира и добра.
