Самые недорогие цифровые часы своими руками

В этом небольшом уроке мы создадим очень недорогие цифровые часы, совместимые с 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()

На этом пока всё. Хороших вам проектов.

Ардуино+