#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
char st[2];
const unsigned char Select_Side [] PROGMEM = {
0x80, 0xc0, 0xe0, 0xc0, 0x80
};
unsigned long previousMillisGetTimeDate = 0;
const long intervalGetTimeDate = 100;
bool Menu_Utama = false;
bool Menu_Set = false;
bool blink_cursor = false;
byte Pilihan_menu = 0;
byte Pilihan_menu_set = 0;
byte Mesin = 0;
byte Menu_Set_Manual = 0;
byte tombolOK, Menu_Set_cnt, tombolAtas, tombolBawah;
int _delay = 100;
int led = 8;
void setup() {
pinMode(led, OUTPUT);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void loop() {
baca_tombol();
unsigned long currentMillisGetTimeDate = millis();
if (currentMillisGetTimeDate - previousMillisGetTimeDate >= intervalGetTimeDate) {
previousMillisGetTimeDate = currentMillisGetTimeDate;
if (Menu_Utama == false) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(5, 3);
display.print("tempC");
display.print(F(" "));
display.print((char)247);
display.print(F("C"));
display.setCursor(5, 13);
display.print("humi");
display.print(F(" %"));
display.drawRect(0, 0, 58, 34, WHITE);
display.drawRect(60, 0, 68, 34, WHITE);
display.drawRect(0, 36, 128, 28, WHITE);
display.display();
}
if (tombolOK == LOW && Menu_Utama == false) {
delay(200);
Pilihan_menu = 1;
Menu_Utama = true;
}
while (Menu_Utama == true) {
baca_tombol();
if (tombolBawah == LOW) {
delay(200);
Pilihan_menu++;
if (Pilihan_menu > 5) Pilihan_menu = 1;
}
if (tombolAtas == LOW) {
delay(200);
Pilihan_menu--;
if (Pilihan_menu < 1) Pilihan_menu = 5;
}
if (tombolOK == LOW && Pilihan_menu == 1 ) {
delay(200);
digitalWrite(led, HIGH);
}
if (tombolOK == LOW && Pilihan_menu == 2 ) {
delay(200);
digitalWrite(led, LOW);
}
if (tombolOK == LOW && Pilihan_menu == 3) {
delay(200);
Menu_Set = true;
Menu_Set_cnt = 1;
Pilihan_menu_set = 1;
}
if (tombolOK == LOW && Pilihan_menu == 4)
{
delay(200);
Menu_Set = true;
Menu_Set_cnt = 2;
Menu_Set_Manual = 1;
Display_to_save();
}
if (tombolOK == LOW && Pilihan_menu == 5) {
delay(200);
Menu_Utama = false;
}
if (Pilihan_menu == 1) {
Menu_Utama_Display(Pilihan_menu);
} else if (Pilihan_menu == 2) {
Menu_Utama_Display(Pilihan_menu);
} else if (Pilihan_menu == 3) {
Menu_Utama_Display(Pilihan_menu);
} else if (Pilihan_menu == 4) {
Menu_Utama_Display(Pilihan_menu);
} else if (Pilihan_menu == 5) {
Menu_Utama_Display(Pilihan_menu);
}
while (Menu_Set == true && Menu_Set_cnt == 1) {
setingan();
}
// while (Menu_Set == true && Menu_Set_cnt == 2) {
// }
}
}
}
void baca_tombol() {
tombolOK = digitalRead(4);
tombolAtas = digitalRead(5);
tombolBawah = digitalRead(6);
}
void setingan() {
baca_tombol();
display.clearDisplay();
if (Pilihan_menu_set == 1) {
Menu_Seting_Display(Pilihan_menu_set);
} else if (Pilihan_menu_set == 2) {
Menu_Seting_Display(Pilihan_menu_set);
} else if (Pilihan_menu_set == 3) {
Menu_Seting_Display(Pilihan_menu_set);
}
if (tombolBawah == LOW) {
delay(200);
Pilihan_menu_set++;
if (Pilihan_menu_set > 3) Pilihan_menu_set = 1;
}
if (tombolAtas == LOW) {
delay(200);
Pilihan_menu_set--;
if (Pilihan_menu_set < 1) Pilihan_menu_set = 3;
}
if (tombolOK == LOW && Pilihan_menu_set == 1) {
delay(200);
}
if (tombolOK == LOW && Pilihan_menu_set == 2) {
delay(200);
}
if (tombolOK == LOW && Pilihan_menu_set == 3) {
delay(200);
Menu_Set_cnt = 0;
Menu_Set = false;
}
display.display();
}
void Menu_Utama_Display(byte slct) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(50, 0);
display.print(F("MENU"));
display.setCursor(7, 12);
display.print(F("Hidupkan Led"));
display.setCursor(7, 22);
display.print(F("Matikan Led"));
display.setCursor(7, 32);
display.print(F("Setingan"));
display.setCursor(7, 42);
display.print(F("Reset"));
display.setCursor(7, 55);
display.print(F("Kembali"));
//display.drawRoundRect(0, 15, 60, 40, 2, WHITE);
if (slct == 1) {
// display.drawBitmap(0, 12, Select_Side, 3, 5, WHITE);
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 12);
display.print(F(" Hidupkan Led "));
} else if (slct == 2) {
// display.drawBitmap(0, 22, Select_Side, 3, 5, WHITE);
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 22);
display.print(F(" Matikan Led "));
} else if (slct == 3) {
// display.drawBitmap(0, 32, Select_Side, 3, 5, WHITE);
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 32);
display.print(F(" Setingan "));
//
} else if (slct == 4) {
// display.drawBitmap(0, 42, Select_Side, 3, 5, WHITE);
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 42);
display.print(F(" Reset "));
//
} else if (slct == 5) {
// display.drawBitmap(0, 55, Select_Side, 3, 5, WHITE);
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 55);
display.print(F(" Kembali "));
}
display.display();
}
void Menu_Seting_Display(byte slct) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(50, 0);
display.print(F("MENU SET"));
display.setCursor(7, 12);
display.print(F("Cerah"));
display.setCursor(7, 22);
display.print(F("Status"));
display.setCursor(7, 55);
display.print(F("Kembali"));
if (slct == 1) {
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 12);
display.print(F(" Cerah "));
} else if (slct == 2) {
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 22);
display.print(F(" Status"));
} else if (slct == 3) {
display.setTextColor(BLACK, WHITE);
display.setCursor(1, 55);
display.print(F(" Kembali "));
}
display.display();
}
void Display_to_save() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(36, 30);
display.print(F("Tersimpan"));
display.display();
delay(500);
}