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 ) //minute untuk waktu mulainya empat untuk lama buzzernya berbunyi 
      { 
        getTrigger = 1;//memanggil buzzer 
      }
      
     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();
      }
    }//=============================================================================================



//INI UNTUK MENTRIGER BUZZER 
  if(getTrigger == 1){
    int BuzzerLoudRange = 4000;//buzzer di panggil selama 4 detik/setting jika ingin lebih
        digitalWrite(buzzer, HIGH);
      delay(BuzzerLoudRange);  
      getTrigger = 0;
      second += (BuzzerLoudRange/1000);
  }else digitalWrite(buzzer, LOW);
}