Проект не претендует на звание нового велосипеда, но чтобы описание не кануло в лету буду делиться своими мыслями тут.
Сами часы ведь и после можно будет использовать в связке с другими проектами.
В общем в наличии у меня имеется:
Голубой OLED монитор 0.96" 128X64 с подключением i2c
Сами часы ведь и после можно будет использовать в связке с другими проектами.
В общем в наличии у меня имеется:
- Arduino UNO ATmega328P/CH340G
Выбирал с разъемом microUSB, т.к. постоянно к компьютеру подключен какой либо кабель с этим интерфейсом.
- Часы реального времени DS1302
Батарейку взял из старой материнской платы, где она играла ту же роль питания часов для неё.
Лучшим вариантом конечно были бы часы DS1307. Они и меньше по размеру значительно.
Например такие:
Весьма неплохой экран, в ярком свете весь текст отлично видно.
Их в последствии легче будет спрятать, но так как цена самих часов в среднем не выше 60 руб. то я не сильно расстроился.
К сожалению на текущий момент испытываю острый дефицит с хорошими контактными проводами, по этому приходится в разъемы макетной платы подключать просто голые провода, а к самим контактам часов подпаиваться.
Библиотека с русским шрифтом: ссылка
Библиотека для часов: ссылка (с удобным описанием)
Скетч:
#include <DS1302.h>#include <OLED_I2C.h>OLED lcd(SDA, SCL, 2); //подключение к SDA SCL и 2й пин как кнопка RESET для монитораDS1302 RTC(8,7,13); //подключение RST=D8, DAT=D7, CLK=D13//объявляем шрифтыextern uint8_t RusFont[];extern uint8_t BigNumbers[];char dat;Time t;void setup() {lcd.begin();Serial.begin(9600);RTC.halt(false);RTC.writeProtect(false);}//устанавливаем наименование каждому днюString dowToDay(int day){String nameday;switch (day){case 1: {nameday = "Gjytltkmybr"; //понедельникbreak;}case 2:{nameday = "Dnjhybr"; //вторникbreak;}case 3:{nameday = "Chtlf"; //средаbreak;}case 4:{nameday = "Xtndthu"; //четвергbreak;}case 5:{nameday = "Gznybwf"; //пятницаbreak;}case 6:{nameday = "Ce,,jnf"; //субботаbreak;}case 7:{nameday = "Djcrhtctymt"; //воскресеньеbreak;}}return nameday;}void loop() {t = RTC.getTime(); //Запрос времениString h = String(t.hour, DEC); //Библиотека понимает только формат String приходится в него переводитьString m = String(t.min, DEC);String s = String(t.sec, DEC);String day = dowToDay(t.dow);//Рисуем впереди ноль для заполнения пустотыif (t.hour<10) h = "0" + h;if (t.min<10) m = "0" + m;if (t.sec<10) s = "0" + s;//чистим экран и устанавливаем цифровой шрифтlcd.clrScr();lcd.setFont(BigNumbers);//Выводим на экран часы минуты секундыlcd.print(h,10,10);lcd.print(m,46,10);lcd.print(s,80,10);//меняем шрифт на русский и печатаем день неделиlcd.setFont(RusFont);lcd.print(day,0,50);//рисуются точки (:) между час и минутаlcd.drawLine(42,15,42,17);lcd.drawLine(43,15,43,17);lcd.drawLine(42,27,42,29);lcd.drawLine(43,27,43,29);//рисуются точки (:) между минута и секундаlcd.drawLine(76,15,76,17);lcd.drawLine(77,15,77,17);lcd.drawLine(76,27,76,29);lcd.drawLine(77,27,77,29);//Для отладки выдаем в COM порт информациюSerial.print(t.hour, DEC);Serial.print(" : ");Serial.print(t.min, DEC);Serial.print(" : ");Serial.print(t.sec, DEC);Serial.print(" День: ");Serial.println(day);lcd.update();delay(450); //Оптимальная задержка для корректного отражения времени}
Изображения взяты с ресурсов:
aliexpress.com
iarduino.ru
Sands Casino: Luxury Hotel & Resort in Las Vegas
ОтветитьУдалитьCome out 샌즈카지노 and play at Sands 카지노 Casino, where fun and excitement are always present, right at your fingertips. From table games and 1xbet korean live-action