#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
Adafruit_SSD1306 display(128, 64, &Wire, 4); // Variabel untuk display OLED
// Definisikan pin untuk push button
#define btnUp 7
#define btnOk 5
#define btnDown 6
#define btnBack 4
// Variabel untuk menyimpan nilai pembacaan push button
boolean statusBtnUp = false;
boolean statusBtnOk = false;
boolean statusBtnDown = false;
boolean statusBtnBack = false;
// Variabel untuk menyimpan nilai akhir push button
boolean statusAkhirBtnUp = false;
boolean statusAkhirBtnOk = false;
boolean statusAkhirBtnDown = false;
boolean statusAkhirBtnBack = false;
// Variabel kondisi push button (ditekan/tidak)
boolean UP = false;
boolean OK = false;
boolean DOWN = false;
boolean BACK = false;
// Variabel untuk halaman pada display OLED
int halaman = 1;
int menuItem = 1;
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Perintah menjalankan display OLED
display.clearDisplay(); // Tampilan display dikosongkan
// Perintah untuk push button sebagai input
pinMode(btnUp, INPUT_PULLUP);
pinMode(btnOk, INPUT_PULLUP);
pinMode(btnDown, INPUT_PULLUP);
pinMode(btnBack, INPUT_PULLUP);
}
void loop() {
tampil();
// Pembacaan kondisi push button
statusBtnUp = digitalRead(btnUp);
statusBtnOk = digitalRead(btnOk);
statusBtnDown = digitalRead(btnDown);
statusBtnBack = digitalRead(btnBack);
// Deklarasikan fungsi jika push button ditekan
saatUpDitekan();
saatOkDitekan();
saatDownDitekan();
saatBackDitekan();
// Kondisi untuk button up
if (UP && halaman == 1) {
UP = false;
menuItem --;
if (menuItem < 1) menuItem = 3; // Sesuaikan dengan jumlah menu item
}
// Kondisi untuk button down
if (DOWN && halaman == 1) {
DOWN = false;
menuItem ++;
if (menuItem > 3) menuItem = 1; // Sesuaikan dengan jumlah menu item
}
// Kondisi untuk button ok
if (OK) {
OK = false;
if (halaman == 1 && menuItem == 1) {
halaman = 2;
} else if (halaman == 1 && menuItem == 2) {
halaman = 3;
} else if (halaman == 1 && menuItem == 3) {
halaman = 4;
}
}
// Kondisi untuk button back
if (BACK) {
BACK = false;
if (halaman >= 2 && halaman <= 4) {
halaman = 1;
}
}
Serial.println(menuItem);
delay(100);
}
// Fungsi jika push button ditekan
void saatUpDitekan() {
if (statusBtnUp != statusAkhirBtnUp) { // Jika kondisi terpenuhi akan masuk ke blok program
if (statusBtnUp == 0) { // Blok program untuk mengetahui kondisi push button 0
UP = true; // Saat push button ditekan maka nilai UP jadi true dan sebaliknya
}
delay(50);
}
statusAkhirBtnUp = statusBtnUp; // Update nilai push buttton
}
void saatOkDitekan() {
if (statusBtnOk != statusAkhirBtnOk) {
if (statusBtnOk == 0) {
OK = true;
}
delay(50);
}
statusAkhirBtnOk = statusBtnOk;
}
void saatDownDitekan() {
if (statusBtnDown != statusAkhirBtnDown) {
if (statusBtnDown == 0) {
DOWN = true;
}
delay(50);
}
statusAkhirBtnDown = statusBtnDown;
}
void saatBackDitekan() {
if (statusBtnBack != statusAkhirBtnBack) {
if (statusBtnBack == 0) {
BACK = true;
}
delay(50);
}
statusAkhirBtnBack = statusBtnBack;
}
// Semua tampilan pada display OLED
void tampil() {
if (halaman == 1) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(30, 0);
display.print("MENU DISPLAY");
if (menuItem == 1) {
display.setCursor(5, 17);
display.setTextColor(WHITE);
display.print("> Setting");
} else {
display.setCursor(5, 17);
display.setTextColor(WHITE);
display.print(" Setting");
}
if (menuItem == 2) {
display.setCursor(5, 27);
display.setTextColor(WHITE);
display.print("> Calculator");
} else {
display.setCursor(5, 27);
display.setTextColor(WHITE);
display.print(" Calculator");
}
if (menuItem == 3) {
display.setCursor(5, 37);
display.setTextColor(WHITE);
display.print("> Contact");
} else {
display.setCursor(5, 37);
display.setTextColor(WHITE);
display.print(" Contact");
}
// Tampilan halaman masing-masing menu display
} else if (halaman == 2) {
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(15, 15);
display.print("SETT");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(20, 50);
display.print("Setting App");
} else if (halaman == 3) {
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(30, 15);
display.print("+ - x");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(5, 50);
display.print("Calculator App");
} else if (halaman == 4) {
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(45, 15);
display.print("+628");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(20, 50);
display.print("Contact Person");
}
display.display();
}