|
/*----------------Written by :-----------*
|
|
*--------------Mathis Morales-----------*
|
|
*---------------------------------------*/
|
|
#include <Wire.h>
|
|
#include <TM1637Display.h>
|
|
|
|
|
|
#define CLK 12
|
|
#define DIO 11
|
|
|
|
|
|
// Create rtc and display object:
|
|
TM1637Display display = TM1637Display(CLK, DIO);
|
|
|
|
|
|
|
|
void setup()
|
|
{
|
|
/*------------PIN LAYOUT------------*/
|
|
pinMode(13,OUTPUT); // LED_BUILTIN activation
|
|
pinMode(12,OUTPUT); // CLK on display
|
|
pinMode(11,OUTPUT); // SDA on display
|
|
pinMode(2,OUTPUT); // ACTIVATE BUZZER
|
|
pinMode(3,INPUT); // RUN
|
|
pinMode(5,INPUT); // Select SEC
|
|
pinMode(6,INPUT); // Select MIN
|
|
pinMode(8,INPUT); // -
|
|
pinMode(9,INPUT); // +
|
|
|
|
/*------------SCREEN INIT------------*/
|
|
// Set the display brightness (0-7):
|
|
display.setBrightness(5);
|
|
// Clear the display:
|
|
display.clear();
|
|
|
|
// Begin serial communication at a baud rate of 9600:
|
|
Serial.begin(9600);
|
|
// Wait for console opening:
|
|
delay (2000);
|
|
|
|
display.showNumberDecEx(8888,0b01000000, false, 4, 0);
|
|
delay(1000);
|
|
}
|
|
|
|
int val_min=0;
|
|
int val_sec=0;
|
|
int val=0;
|
|
|
|
void loop()
|
|
{
|
|
display.showNumberDecEx(0000,0b01000000, true, 4, 0);
|
|
|
|
/*------------------------------------------------------------**
|
|
**----------------------MINUTES SETTINGS----------------------**
|
|
**------------------------------------------------------------*/
|
|
if (digitalRead(6)==1)
|
|
|
|
{
|
|
while ((digitalRead(5)!=1)&&(digitalRead(3)!=1))
|
|
{
|
|
if (digitalRead(9)==1)
|
|
{
|
|
val_min++;
|
|
if (val_min>59)
|
|
{
|
|
val_min=59;
|
|
}
|
|
}
|
|
if (digitalRead(8)==1)
|
|
{
|
|
val_min--;
|
|
if (val_min<0)
|
|
{
|
|
val_min=0;
|
|
}
|
|
|
|
}
|
|
display.showNumberDecEx(val_min*100+val_sec,0b01000000, true, 4, 0);
|
|
delay(100);
|
|
}
|
|
}
|
|
|
|
/*------------------------------------------------------------**
|
|
**----------------------SECONDS SETTINGS----------------------**
|
|
**------------------------------------------------------------*/
|
|
if (digitalRead(5)==1)
|
|
{
|
|
while ((digitalRead(6)!=1)&&(digitalRead(3)!=1))
|
|
{
|
|
if (digitalRead(9)==1)
|
|
{
|
|
val_sec++;
|
|
if (val_sec>59)
|
|
{
|
|
val_sec=0;
|
|
if (val_min<59)
|
|
{
|
|
val_min++;
|
|
}
|
|
}
|
|
}
|
|
if (digitalRead(8)==1)
|
|
{
|
|
val_sec--;
|
|
if (val_sec<0)
|
|
{
|
|
if (val_min!=0)
|
|
{
|
|
val_min--;
|
|
val_sec=59;
|
|
}
|
|
else
|
|
{
|
|
val_sec=0;
|
|
}
|
|
|
|
}
|
|
}
|
|
display.showNumberDecEx(val_min*100+val_sec,0b01000000, false, 4, 0);
|
|
delay(100);
|
|
}
|
|
}
|
|
|
|
/*-------------------------------------------------------------**
|
|
**-------------------------RUN ROUTINE-------------------------**
|
|
**-------------------------------------------------------------*/
|
|
if (digitalRead(3)==1)
|
|
{
|
|
display.showNumberDecEx(val_min*100+val_sec,0b01000000, false, 4, 0);
|
|
|
|
while (((val_min+val_sec)!=0)&&(digitalRead(5)!=1)) //pin 5 allow to stop the countdown sequence
|
|
{
|
|
if ((val_sec==0)&&(val_min!=0))
|
|
{
|
|
val_min--;
|
|
val_sec=60;
|
|
}
|
|
|
|
val_sec--;
|
|
|
|
Serial.println(val_min*100+val_sec);
|
|
|
|
display.showNumberDecEx(val_min*100+val_sec,0b01000000, false, 4, 0);
|
|
if ((val_sec==0)&&(val_min==0))
|
|
{
|
|
digitalWrite(2,HIGH);
|
|
delay (500);
|
|
digitalWrite(2,LOW);
|
|
delay (500);
|
|
}
|
|
delay(1000);
|
|
}
|
|
}
|
|
}
|