В этом проекте мы соберём простые электронные часы. Для индикации будем использовать популярный модуль с четырьмя разрядами на светодиодных индикаторах (обычно маркируется как 3642BS-1), работающий через драйвер TM1637.
Модуль имеет удобный интерфейс из двух проводов (CLK и DIO), а также встроенное двоеточие для отображения времени в формате HH:MM.
TM1637 | Arduino Uno |
---|---|
VCC | 5V |
GND | GND |
DIO | D2 |
CLK | D3 |
#include <TM1637Display.h> // библиотека для работы с индикатором
// Пины подключения
#define CLK 3
#define DIO 2
TM1637Display display(CLK, DIO);
// Переменные для хранения времени
int hours = 12; // Установим час
int minutes = 0; // Установим минуты
// Переменная для мигания двоеточия
bool dots = true;
// Переменная времени
unsigned long lastUpdate = 0;
void setup() {
display.setBrightness(0x0f); // Яркость дисплея (0x00..0x0f)
}
void loop() {
// Проверяем, прошло ли 1 минута
if (millis() - lastUpdate >= 60000) {
lastUpdate = millis();
minutes++;
if (minutes >= 60) {
minutes = 0;
hours++;
if (hours >= 24) {
hours = 0;
}
}
}
// Переводим время в массив для дисплея
int displayTime = hours * 100 + minutes;
// Отображаем время
display.showNumberDecEx(displayTime,
(dots ? 0b01000000 : 0), // включаем/выключаем двоеточие
true); // если хотите скрыть ноль перед часом установите false
// Каждую секунду мигаем двоеточием
delay(1000);
dots = !dots;
}
Перед компиляцией убедитесь, что установлена библиотека TM1637Display.
Её можно найти в Arduino IDE:
Скетч → Подключить библиотеку → Управлять библиотеками… → поиск TM1637 → установить TM1637Display.
hours
и minutes
.60000 мс
) увеличивается счётчик минут, а затем — часов.Мы сделали простые часы без аппаратного модуля реального времени (RTC). После перезапуска Arduino время сбросится на 12:00. В следующих уроках можно будет подключить модуль RTC DS3231, чтобы часы шли точно и сохраняли время при выключении питания.