#include <U8g2lib.h>
#define button 12
#define relay 8
int cldwn = 0;
String rstate = "Off";
String bstate = "Off";
int prevButtonState = LOW;
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE);
void setup() {
u8g2.begin()
Serial.begin(9600);
pinMode(button, INPUT);
pinMode(relay, OUTPUT);
}
void loop() {
int buttonState = digitalRead(button);
if (buttonState == HIGH && prevButtonState == LOW && cldwn == 0) {
cldwn = 100;
rstate = "On";
digitalWrite(relay, HIGH);
delay(1000);
}
if (cldwn > 0) {
cldwn--;
rstate = "Off";
digitalWrite(relay, LOW);
}
if (buttonState == LOW) {bstate="Off"}
else {bstate="On"}
prevButtonState = buttonState;
Serial.print("COOLDOWN: ");
Serial.print(cldwn);
Serial.print(", STATE: ");
Serial.println(rstate);
delay(10);
}
void display_state(int x) {
u8g2.clearBuffer();
u8g2.setFontMode(1);
u8g2.setBitmapMode(1);
if (x==1) {
if (bstate == "Off") {bstate_val=0;}
else {bstate_val=54;}
if (rstate == "Off") {rstate_val=0;}
else {rstate_val=54;}
u8g2.drawFrame(0, 0, 128, 64);
u8g2.drawFrame(3, 3, 39, 58);
u8g2.drawFrame(44, 3, 40, 58);
u8g2.drawFrame(86, 3, 39, 58);
u8g2.setFont(u8g2_font_helvB08_tr);
u8g2.drawStr(7, 16, "Relay");
u8g2.setFont(u8g2_font_haxrcorp4089_tr);
u8g2.drawStr(7, 26, "State");
u8g2.setFont(u8g2_font_helvB08_tr);
u8g2.drawStr(48, 16, "Button");
u8g2.setFont(u8g2_font_haxrcorp4089_tr);
u8g2.drawStr(48, 26, "State");
u8g2.setFont(u8g2_font_helvB08_tr);
u8g2.drawStr(7, 57, rstate);
u8g2.drawStr(48, 57, bstate);
u8g2.setDrawColor(2);
u8g2.drawBox(5, 5, 35, rstate_val);
u8g2.drawBox(46, 5, 36, bstate_val);
}
u8g2.sendBuffer();
}