Простые часы на Arduino Uno

Проекты на Arduino Uno и Slot Shield

Чтобы собрать простые часы на Arduino Uno понадобится только один дополнительный модуль — четырёхразрядный индикатор.

Можете собрать такие часы на макетке, но удобнее будет на Troyka Slot Shield. Плата станет корпусом будущего устройства.

Текущее время синхронизируется с компьютером при перепрошивке платы.

Что потребуется

Полный сет компонентов проекта. В сет входят:

Видеоинструкция

Как собрать

Установите Troyka Slot Shield на Arduino Uno

Вставьте Quad Display в разъёмы E и F. Пин CS подключу к 10 пину Arduino.

Скетч

Прошейте контроллер скетчем через Arduino IDE.

simple-clock.ino
// Подключаем библиотеку для работы с дисплеем
#include <QuadDisplay2.h>
// создаём объект класса QuadDisplay и передаём номер пина CS
QuadDisplay qd(10);
// создаем объекты класса bute для хранения текущего значения Часов, Минут, Секунд
int hours = 0;
int minutes = 0;
int seconds = 0;
// создаем объект класса long для хранения счетчика
long lastTime = 0;
 
void setup() {
   // инициализация дисплея
  qd.begin();
  // инициализируем время
  setTime(__TIMESTAMP__);
}
 
void loop() {
  // как только разница между текущим временем и временем записанным в lastTime становится больше 1000 миллисекунд...
  while(millis()-lastTime > 1000) {
    //...обновляем  lastTime и добавляем к счетчику Секунд +1
    lastTime = millis();
    seconds++;
    // как только счетчик секунд достигнет 60, обнуляем его и добавляем к счетчику Минут +1...
    if (seconds >= 60) {
       seconds = 0;
       minutes++;
    }
    // ...тоже самое для Часов...
    if (minutes >= 60) {
       minutes = 0;
       hours++;
    }
    // ... и обнуляем счетчик Часов в конце дня
    if (hours >= 24) {
       hours = 0;
    }
  }
  // выводим время на дисплей
  qd.displayScore(hours, minutes, true);
}
 
// функция записи текущего времени в переменные
 
void setTime(const char* compileTimeStamp) 
{
    hours = ((compileTimeStamp[11] - '0') * 10
        + (compileTimeStamp[12] - '0'));
 
    minutes = ((compileTimeStamp[14] - '0') * 10
        + (compileTimeStamp[15] - '0'));
 
    seconds = ((compileTimeStamp[17] - '0') * 10
        + (compileTimeStamp[18] - '0'));
}

Часто задаваемые вопросы

Где скачать необходимые библиотеки и как их установить?
У моего модуля QuadDisplay всего три ноги и расположены они слева. Можно ли использовать его в этом проекте?

У вас предыдущая версия модуля. Она снята с производства пару лет назад. С этим скетчем, библиотекой и схемой сборки модуль работать не будет.