В этом проекте показано, как собрать цифровые часы с использованием 4-значного 7-сегментного дисплея TM1637 и таймера DS3231 с Arduino. Этот дисплей отлично подходит для отображения времени.

Модуль TM1637 представляет собой специальную схему управления светодиодами (светодиодный дисплей) с интерфейсом сканирования клавиатуры, который внутренне интегрирован с цифровым интерфейсом микроконтроллера и схемой драйвера светодиодов. Питается данный модуль от 3,3 – 5,5 В и потребляет ток около 80 мА.

DS3231 представляет собой недорогие, очень точные часы реального времени (RTC) с интерфейсом I2C с TCXO и встроенным кристаллом компенсации температуры. Устройство имеет вход для напряжения батареи, который отсчитывает время при отключении питания устройства. Наличие резонатора увеличивает долговременную точность устройства и снижает количество компонентов на производственной линии. DS3231 продается в корпусе SO с 16 выводами и доступен в коммерческих или промышленных диапазонах температур.

Схема подключения Arduino к TM1637 и DS3231 для реализации часов представлена на следующем рисунке.

Код программы довольно прост и представлен далее. Не забудьте только подключить библиотеки RTClib и TM1637.
#include "RTClib.h"
#include <TM1637Display.h>
#define CLK 8
#define DIO 9
RTC_DS3231 rtc;
TM1637Display display = TM1637Display(CLK, DIO);
void setup() {
Serial.begin(9600);
delay(3000);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
display.setBrightness(5);
display.clear();
}
void loop() {
DateTime now = rtc.now();
int displaytime = (now.hour() * 100) + now.minute();
Serial.println(displaytime);
display.showNumberDecEx(displaytime, 0b11100000, true);
delay(1000);
display.showNumberDec(displaytime, true);
delay(1000);
}
© digitrode.ru