Проект 3. Светофор с ручным управлением

Мы рассмотрим новый модуль - Keypad, научимся считывать данные с него и передавать в компьютер. Кроме этого сделаем светофор, который управляется при помощи этого модуля!

Программирование:

Serial. COM-порт

Практика

Присоедините Keypad к COM-порту и прочитайте данные с него в Мониторе порта Arduino (см. пример в библиотеке) 2. Сделайте так, чтобы сигнал с первой кнопки (D0) управлял красным светодиодом (выключал его). подсказка: для этого необходимо число 255 в программе умножить на результат чтения данных с датчика. 3. Сделайте аналогично чтобы кнопка D1 управляла желтым светодиодом, а кнопка D2 зелёным светодиодом.

Дополнительное задание

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

Решение

Мы рекомендуем сначала освоить материал и попробовать сделать программу самостоятельно! А потом проверить себя, посмотрев наш вариант решения:

#include <Eryoma.h> // Подключаем библиотеку
Eryoma eryoma;      // Создаём экземпляр класса Eryoma

void setup() {
  eryoma.setupConnector(ePort1, TrafficLight); // Указываем, что на 1 порте подключен модуль TrafficLight
  eryoma.setupConnector(ePort4, Keypad);       // Указываем, что на 1 порте подключен модуль Keypad
}

void loop() {
  /* **********************************************************
  Если раньше мы записывали значение либо 0 либо 255,
  то теперь мы должны привязать его к кнопке.
  Если кнопка не нажата, eryoma.read(); вернет значение 1, если нажата, то 0. 
  Соответственно:
  eryoma.read(ePort4, D0) * 255 = 0 * 255 = 0   (и светодиод гореть не будет)
  eryoma.read(ePort4, D0) * 255 = 1 * 255 = 255 (светодиод гореть будет)
  ********************************************************** */
  eryoma.write(ePort1, eryoma.read(ePort4, D0) * 255, eryoma.read(ePort4, D1) * 255, eryoma.read(ePort4, D2) * 255);
}

#include <Eryoma.h> // Подключаем библиотеку
Eryoma eryoma;      // Создаём экземпляр класса Eryoma

void setup() {
  eryoma.setupConnector(ePort1, TrafficLight); // Указываем, что на 1 порте подключен модуль TrafficLight
  eryoma.setupConnector(ePort4, Keypad);       // Указываем, что на 4 порте подключен модуль Keypad
}

void loop() {
  /***********************************************************
    Если раньше мы записывали значение либо 0 либо 255,
    то теперь мы должны привязать его к кнопке.
    Если кнопка не нажата, eryoma.read(); вернет значение 1, если нажата, то 0.
    Соответственно:
    eryoma.read(ePort4, D0) * 255 = 0 * 255 = 0   (и светодиод гореть не будет)
    eryoma.read(ePort4, D0) * 255 = 1 * 255 = 255 (светодиод гореть будет)
  ***********************************************************/
  eryoma.write(ePort1, eryoma.read(ePort4, D0) * eryoma.read(ePort4, An) / 4, eryoma.read(ePort4, D1) * eryoma.read(ePort4, An) / 4, eryoma.read(ePort4, D2) * eryoma.read(ePort4, An) / 4);
}