Код Ардуино для дисплея TM1637

Подробности по подключению

Скачать библиотеку

Приведенный скетч демонстрирует работу часов. Текущее время для запуска часов, задается в скетче в следующих строках "unsigned char minute = 35; unsigned char hour = 10;". Установите текущее время прошейте Arduino и подайте на него питание. Если все подключено без ошибок, то часы заработают сразу.

#include "TimerOne.h"
#include "TM1637.h"
#define ON 1
#define OFF 0

int8_t TimeDisp[] = { 0, 0, 0, 0 };
unsigned char ClockPoint = 1;
unsigned char Update;
unsigned char halfsecond = 0;
unsigned char second;
unsigned char minute = 35;
unsigned char hour = 10;

#define CLK 2
#define DIO 3
TM1637 tm1637(CLK,DIO);

void setup()
{
  tm1637.clear();
  tm1637.brightness(7);  // яркость на максимум
  Timer1.initialize(500000); // 500 мс
  Timer1.attachInterrupt(TimingISR); //прерывание по таймеру
}

void loop()
{
  if(Update == ON)
  {
    TimeUpdate();
    tm1637.display(TimeDisp);
  }
}

void TimingISR()
{
  halfsecond ++;
  Update = ON;
  if(halfsecond == 2)
  {
    second ++;
    if(second == 60)
    {
      minute ++;
      if(minute == 60)
      {
        hour ++;
        if(hour == 24)hour = 0;
        minute = 0;
      }
      second = 0;
    }
    halfsecond = 0;
  }
  ClockPoint = (~ClockPoint) & 0x01;
}

void TimeUpdate(void)
{
  if(ClockPoint)tm1637.point(true);
  else tm1637.point(false);
  TimeDisp[0] = hour / 10;
  TimeDisp[1] = hour % 10;
  TimeDisp[2] = minute / 10;
  TimeDisp[3] = minute % 10;
  Update = OFF;
}