// TM1637 SevenSegment Counter Wokwi Example
//
// https://wokwi.com/projects/339227323398095442
#include <TM1637.h>
const int CLK = 2;
const int DIO = 3;
int Digit1=0;
int Digit2=0;
int Digit3=0;
int Digit4=0;
bool point = true;
int const Minutes=4;
int const Heures=5;
int const Start=6;
int const Buzzer=7;
TM1637 tm(CLK, DIO);
void setup() {
tm.init();
tm.set(BRIGHT_TYPICAL);
Serial.begin(9600);
pinMode(Minutes, INPUT_PULLUP);
pinMode(Heures, INPUT_PULLUP);
pinMode(Start, INPUT_PULLUP);
}
void loop() {
SETUPTIME:
if(digitalRead(Heures)==LOW){++Digit2;delay(750);}
if(Digit2>=10){Digit2=0;++Digit1;}
if(Digit1>=2 && Digit2>=4){Digit1=0;Digit2=0;}
tm.display(0,Digit1);
tm.display(1,Digit2);
if(digitalRead(Minutes)==LOW){++Digit4;delay(750);}
if(Digit4>=10){Digit4=0;++Digit3;}
if(Digit3>=6){Digit3=0;}
tm.display(2,Digit3);
tm.display(3,Digit4);
if(digitalRead(Start)==LOW){goto CLOCK;}
//Serial.println(Digit3);
goto SETUPTIME;
CLOCK:
tm.point(point);
++Digit4;
if(Digit4>=10)
{Digit4=0; ++Digit3;}
if(Digit3>=6)
{Digit3=0; ++Digit2;}
if(Digit2>=10)
{Digit2=0; ++Digit1;}
if(Digit2>=4 && Digit1>=2)
{Digit2=0;Digit1=0;}
tm.display(0,Digit1);
tm.display(1,Digit2);
tm.display(2,Digit3);
tm.display(3,Digit4);
if(Digit3==0 && Digit4==0){buzzer();}
delay(100);
point=!point; //clignotement point.
delay(50);
goto CLOCK;
}
void buzzer()
{
tone(Buzzer, 93,500);
tone(Buzzer,104,500);
tone(Buzzer, 93,500);
tone(Buzzer, 83,500);
}