#include <TimerOne.h>
#include <ezButton.h>
#include <TM1637.h>
#include <ArduinoTrace.h>
#define ON 1
#define OFF 0
//int8_t TimeDisp[] = {0x00,0x00,0x00,0x00};
unsigned char ClockPoint = 1;
unsigned char Update;
unsigned char halfsecond = 0;
unsigned char second;
unsigned char minute = 0;
unsigned char hour = 12;
// Display declaration
TM1637 DISP;
#define CLK 2//pins definitions for TM1637 and can be changed to other ports
#define DIO 3
void setup()
{
Serial.begin(115200);
//Display init
DISP.begin(CLK, DIO, 4); // clockpin, datapin, #digits
DISP.displayClear();
DISP.setBrightness(7); // full brightness, default is 3
Timer1.initialize(500000);//timing for 500ms
Timer1.attachInterrupt(TimingISR);//declare the interrupt serve routine:TimingISR
}
void loop()
{
if(Update == ON)
{
TimeUpdate();
DISP.displayTime(hour,minute,1);
}
}
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)DISP.displayTime(hour,minute,1);
else DISP.displayTime(hour,minute,0);
Update = OFF;
}