Часы с кнопками
Проекты на Arduino Uno и Slot Shield
Задавать часы текущее время с компьютера совсем не удобно. Добавим к четырёхразрядному индикатору маленькую клавиатуру настраивать время станет гораздо проще.
Мозгом таких часов станет оригинальная Arduino Uno, а корпусом — Troyka Slot Shield. На сборку такого гаджета уйдёт меньше минуты.
- Язык программирования: Arduino (C++)
Что потребуется
Полный сет компонентов проекта. В сет входят:
- четырёхразряный индикатор Quad Display
Видеоинструкция
Как собрать
Установите Troyka Slot Shield на Arduino Uno
Вставьте Quad Display в разъёмы E
и F
. Пин CS
подключу к 10
пину Arduino.
Установите четырёхкнопочную клавиатуру в слот C
. Сигнал первой кнопки подключите к пину 0
, второй к 1
, третьей к 4
и четвёртой к 5
.
Скетч
Прошейте контроллер скетчем через Arduino IDE.
- clock-with-buttons.ino
// Подключаем библиотеку для работы с дисплеем #include <QuadDisplay2.h> // создаём объект класса QuadDisplay и передаём номер пина CS QuadDisplay qd(10); // пины к которым подключены кнопки #define BUTTON_PIN_1 0 #define BUTTON_PIN_2 1 #define BUTTON_PIN_3 4 #define BUTTON_PIN_4 5 // задаем длительность #define INTERVAL_SECOND 1000 // создаем объекты класса int для хранения текущего значения Часов, Минут, Секунд int hours = 0; int minutes = 0; int seconds = 0; // создаем объекты класса long для хранения счетчика и изменения времени long lastTime = 0; long lastTimeButton = 0; void setup() { //инициализация кнопок pinMode(BUTTON_PIN_1,INPUT_PULLUP); pinMode(BUTTON_PIN_2,INPUT_PULLUP); pinMode(BUTTON_PIN_3,INPUT_PULLUP); pinMode(BUTTON_PIN_4,INPUT_PULLUP); // инициализация дисплея qd.begin(); } void loop() { // запускаем цикл с заданным интервалом while(millis() - lastTime > INTERVAL_SECOND) { // обновляем lastTime и добавляем к счетчику Секунд +1 lastTime=millis(); seconds++; // как только счетчик секунд достигнет 60, обнуляем его и добавляем к счетчику Минут +1... if (seconds >= 60) { seconds = 0; minutes++; } // ...тоже самое для Часов... if (minutes >= 60) { minutes = 0; hours++; } // ... и обнуляем счетчик Часов в конце дня if (hours >= 24) { hours = 0; } } // в зависимости от состояние кнопок увеличиваем / уменьшаем часы и минуты if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_1)) { hours++; lastTimeButton = millis(); } if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_2)) { hours--; lastTimeButton = millis(); //устанавливаем защиту от перехода через 0 для Часов if (hours < 0) { hours = 23; } } if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_3)) { minutes--; lastTimeButton = millis(); //устанавливаем защиту от перехода через 0 для Минут if (minutes < 0) { minutes = 59; } } if (millis() - lastTimeButton>500 && !digitalRead(BUTTON_PIN_4)) { minutes++; lastTimeButton = millis(); } // выводим время на дисплей qd.displayScore(hours, minutes, true); }
Часто задаваемые вопросы
Где скачать необходимые библиотеки и как их установить?
У моего модуля QuadDisplay всего три ноги и расположены они слева. Можно ли использовать его в этом проекте?
У вас предыдущая версия модуля. Она снята с производства пару лет назад. С этим скетчем, библиотекой и схемой сборки модуль работать не будет.