В этом небольшом уроке мы создадим очень недорогие цифровые часы, совместимые с Arduino, своими руками. Очень интересный проект, который довольно легко повторить. Мы предполагаем, что у вас есть дополнительное зарядное устройство для питания. В этом случае проект будет стоить дороже, если вам нужно дополнительно купить адаптер питания micro USB. Обратите внимание, что эскиз для платы сделан так, что в нем 24-часовой режим отображения времени (без AM и PM).
Шаг 1. Комплектующие
Для этих простеньких Ардуино совместимых часов нам понадобятся:
- Плата ATtiny85 (Digispark)
- Светодиодный дисплей TM1637
- Модуль RTC DS3231
- Провода-перемычки
- Батарея (аккумулятор) CR2032
Шаг 2. Добавляем поддержку платы Digispark
На этом шаге гам нужно добавить поддержку плат Digispark в Arduino IDE.
Перейдите в меню «Файл» и выберите «Настройки».
В поле с надписью «URL-адреса дополнительных контроллеров» введите: http://digistump.com/package_digistump_index.json и нажмите «ОК».
Перейдите в меню «Инструменты» (Tools), а затем «Платы» (Board) выберите «Диспетчер плат» (Boards Manager), а затем из раскрывающегося списка выберите «Contributed»: выберите пакет «Digistump AVR Boards» и нажмите кнопку «Установить».
После завершения установки закройте окно «Диспетчер плат» (Boards Manager) и выберите «Digispark (по умолчанию - 16,5 МГц)» (Digispark (Default - 16.5mhz)) в меню Сервис → Платы (Tools → Boards).
Шаг 3. Схема соединения
Вам нужно будет сделать небольшую пайку для установки штыревых наконечников на модули.
- Вставьте аккумулятор CR2032 в модуль DS3231 RTC;
- Подключите перемычку от P0 на SCL на модуле RTC;
- Затем подключите P2 к SDA на модуле RTC;
- Подключите P3 к CLK на модуле дисплея TM1637;
- Затем P4 на DIO на дисплее;
- Затем VCC и Ground модуля дисплея на модуль RTC, чтобы включить его.
Шаг 4. Программируем с помощью Arduino IDE
Откройте файл эскиза ниже (или используйте приведенный код) и установите правильное время в строке rtc.adjust. Цифры: (Год, Месяц, День, Час, Минуты, Секунды)
Эти платы от Digispark работают иначе, чем платы Ардуино. Сначала вы нажмете на загрузку, а затем включаете плату, когда будет предложено. Они программируются в течение нескольких секунд после подключения.
#include <TinyWireM.h> #include "TinyRTClib.h" #include "TM1637.h" TM1637 tm1637(3 /*CLK*/, 4/*DIO*/); RTC_DS1307 rtc; // SDA=0, SCL=2 int hh, mm; void setup() { tm1637.init(); tm1637.set(5); //BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7; TinyWireM.begin(); // Set the correct time before upload or just comment it out rtc.adjust(DateTime(2018, 6, 29, 9, 33, 0)); void loop(){ DateTime now = rtc.now(); hh = now.hour(), DEC; mm = now.minute(), DEC; tm1637.point(POINT_ON); if ((hh/10) == 0) tm1637.display(0,17); else tm1637.display(0,hh/10); // hour tm1637.display(1,hh%10); tm1637.display(2,mm/10); // minutes tm1637.display(3,mm%10); // delay(500); tm1637.point(POINT_OFF); if ((hh/10) == 0) tm1637.display(0,17); else tm1637.display(0,hh/10); // hour tm1637.display(1,hh%10); tm1637.display(2,mm/10); // minutes tm1637.display(3,mm%10); // delay(500); }// end loop()
На этом пока всё. Хороших вам проектов.
10 августа 2020 в 01:18
А почему данный проект не дополнить кнопками для установки времени ? И будут нормальные часы.
10 августа 2020 в 01:25
Всегда стараемся, чтобы читатели могли сами дополнять уроки, а не слепо копировали всё что написано, чтобы было развитие.
10 августа 2020 в 12:09
Привет. Так будет доработка скетча ? Или данная программа была напечатана в таком виде у иностранных друзей ?