Еще одни часики, на этот раз используем модуль из 8-ми 7-ми сегментных индикаторов на базе MAX7219
Код:
// Выводим на дисплей (8 x 7DIG MAX7219) ЧАСЫ
// Версия: 2.06.2015
// В формате:
// ЧЧ .ММ .СС
// 76 543 210 <- знакоместо на дисплее
// Ч-часы М-минуты С-секунды
// Железо:
// Arduino Uno + дисплей модуль 8CHAR 7DIG MAX7219 + RTC
#include "LedControl.h"
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
// Подключение модуля RTC
// SDA - A4
// SCL - A5
// 5v - Vcc
// GND - GND
// Подключение дисплея
LedControl lc=LedControl(7,6,5,1);
// LedControl(dataPin, clkPin, csPin, numDevices=1);
void setup() {
lc.shutdown(0,false); // Иниц дисплей
lc.setIntensity(0,0); // яркость дисплея
lc.clearDisplay(0); // очистить дисплей
Wire.begin();
RTC.begin();
// Установка текущего времени PC в модуль RTC
// после установки закоментировать и зашить скетч в контроллер
// RTC.adjust(DateTime(__DATE__, __TIME__));
Serial.begin(9600);
// Serial.println(__DATE__);
// Serial.println(__TIME__);
DateTime now = RTC.now();
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(':');
Serial.print(now.second());
Serial.println();
}
void clock_hours(int ch) {
// Разобьем число на 2 разряда
int ch1=ch/10; // Первая цифра числа
int ch2=ch%10; // Вторая цифра числа
lc.setDigit(0,7,ch1,false);
lc.setDigit(0,6,ch2,false);
lc.setChar(0,5,'.',false);
}
void clock_minutes(int cm) {
int cm1=cm/10; // Первая цифра числа
int cm2=cm%10; // Вторая цифра числа
lc.setDigit(0,4,cm1,false);
lc.setDigit(0,3,cm2,false);
lc.setChar(0,2,'.',false);
}
void clock_sec(int cs) {
int cs1=cs/10; // Первая цифра числа
int cs2=cs%10; // Вторая цифра числа
lc.setDigit(0,1,cs1,false);
lc.setDigit(0,0,cs2,false);
}
void loop() {
DateTime now = RTC.now();
int THour=now.hour();
int TMinutes=now.minute();
int TSeconds=now.second();
clock_hours(THour);
clock_minutes(TMinutes);
clock_sec(TSeconds);
}