Firmware-Source-Code-for-ZabutON.md
Source Code Firmware
#define button D2
#define buzzer D5
long previousTime = 0, previousTime2 = 0, durasi=0, berdiri = 0;
long interval = 1000, interval2=(1000*60);
long hours=0,minutes=0,second=0;
int pushButton = 0;
int getTrigger = 0;
void setup() {
Serial.begin(9600);
pinMode(button, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
}
void loop() {
pushButton = digitalRead(button);
if(pushButton != HIGH)
{
long currentTime = millis();
if(currentTime-previousTime >= interval){
if(second == 59 || minutes == 59)
{
minutes += second/59;
if(minutes == 59){
hours += minutes/59;
minutes = 0;
}
second = 0;
}
else second += 1;
Serial.printf("%02d:%02d:%02d\n",hours, minutes, second);
if(minutes >= 1 && minutes%30 == 0 )
{
getTrigger = 1;
}
previousTime = currentTime;
}
}
else
{
if(millis()-berdiri >= 1000){
Serial.printf("%02d:%02d:%02d\n",hours, minutes, second);
berdiri = millis();
}
previousTime2 = previousTime;
if(millis()-previousTime2 >= interval2)
{
hours = 0; minutes =0; second =0;
previousTime2 = millis();
}
}
if(getTrigger == 1){
int BuzzerLoudRange = 4000;
digitalWrite(buzzer, HIGH);
delay(BuzzerLoudRange);
getTrigger = 0;
second += (BuzzerLoudRange/1000);
}else digitalWrite(buzzer, LOW);
}