//START OLED
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSerif9pt7b.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//END OLED
#define buz 2
#define buttonHeat 25
#define buttonMain 33
int mode = 0;
int startTimer = 0;
unsigned long Second = 0;
unsigned long Minutes = 1;
unsigned long SaveTime;
void setup() {
Serial.begin(115200);
pinMode(buttonMain, INPUT_PULLUP);
pinMode(buttonHeat, INPUT_PULLUP);
pinMode(buz, OUTPUT);
}
void loop() {
if (startTimer == 1) {
Timer();
}
if (digitalRead(buttonMain) == LOW) {
mode = 1;
startTimer = 0;
Second = 0;
Minutes = 1;
display.clearDisplay();
display.display();
//Serial.println("Program Utama");
} else if (digitalRead(buttonHeat) == LOW) {
mode = 2;
startTimer = 1;
//Serial.println("Heater - Tunggu Woy");
} else if (mode == 0) {
Serial.println("Pilih Mode");
}
}
void Timer() {
if(millis()-SaveTime>1000) {
if (Second != 0) {
Second -= 1;
}
else if (Minutes != 0 && Second == 0) {
Minutes -= 1;
Second = 59;
}
SaveTime = millis();
}
if (Minutes == 0 && Second == 0) {
bip();
}
oledTimer();
//Serial.println(Minutes);
//Serial.println(Second);
}
void bip(){
do {
digitalWrite(buz, HIGH);
delay(200);
digitalWrite(buz, LOW);
delay(100);
digitalWrite(buz, HIGH);
delay(200);
digitalWrite(buz, LOW);
delay(500);
}
while (mode == 1);
}
void oledTimer() {
//START OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("SSD1306 allocation failed");
}
display.setFont(&FreeSerif9pt7b);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(5, 20);
display.print(Minutes);
display.setCursor(30, 20);
display.write(":");
display.setCursor(39, 20);
display.print(Second);
display.display();
//END OLED
}