#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
Adafruit_SSD1306 lcd(128, 64, &Wire, 4);
#define btnUp 2
#define btnOk 3
#define btnDown 4
#define btnBack 5
bool statusBtnUp = false;
bool statusBtnOk = false;
bool statusBtnDown = false;
bool statusBtnBack = false;
bool statusEndBtnUp = false;
bool statusEndBtnOk = false;
bool statusEndBtnDown = false;
bool statusEndBtnBack = false;
bool UP = false;
bool _OK = false;
bool DOWN = false;
bool BACK = false;
int page = 1;
int menuItem = 1;
void setup() {
Serial.begin(115200);
lcd.begin(SSD1306_SWITCHCAPVCC, 0x3C);//SSD1306_SWITCHCAPVCC parameter name ,0x3C name adress
lcd.clearDisplay();//erase data on display
pinMode(btnUp, INPUT_PULLUP);
pinMode(btnOk, INPUT_PULLUP);
pinMode(btnDown, INPUT_PULLUP);
pinMode(btnBack, INPUT_PULLUP);
}
void loop() {
tampil();
statusBtnUp = digitalRead(btnUp);
statusBtnOk = digitalRead(btnOk);
statusBtnDown = digitalRead(btnDown);
statusBtnBack = digitalRead(btnBack);
saatUppressed();
saatOkpressed();
saatDownpressed();
saatBackpressed();
// untuk button up
if (UP && page == 1) {
UP = false;
menuItem --;
if (menuItem < 1)menuItem = 8;
}
//untuk button down
if (DOWN && page == 1) {
DOWN = false;
menuItem ++;
if (menuItem > 8)menuItem = 1;
}
// untuk button ok
if (_OK) {
_OK = false;
if (page == 1 && menuItem == 1) {
page = 2;
} else if (page == 1 && menuItem == 2) {
page = 3;
} else if (page == 1 && menuItem == 3) {
page = 4;
} else if (page == 1 && menuItem == 4) {
page = 5;
} else if (page == 1 && menuItem == 5) {
page = 6;
} else if (page == 1 && menuItem == 6) {
page = 7;
} else if (page == 1 && menuItem == 8) {
page = 9;
}
}
// untuk button back
if (BACK) {
BACK = false;
if (page == 2 || page == 3 || page == 4 || page == 5 || page == 6 || page == 7 || page == 8 || page == 9) {
page = 1;
}
}
//Serial.println(menuItem);
delay(100);
}
//--------------------------------------------------------------------------------
void saatUppressed() {
if (statusBtnUp != statusEndBtnUp) {
if (statusBtnUp == 0) {
UP = true;
}
delay(50);
}
statusEndBtnUp = statusBtnUp;
}
void saatOkpressed() {
if (statusBtnOk != statusEndBtnOk) {
if (statusBtnOk == 0) {
_OK = true;
}
delay(50);
}
statusEndBtnOk = statusBtnOk;
}
void saatDownpressed() {
if (statusBtnDown != statusEndBtnDown) {
if (statusBtnDown == 0) {
DOWN = true;
}
delay(50);
}
statusEndBtnDown = statusBtnDown;
}
void saatBackpressed() {
if (statusBtnBack != statusEndBtnBack) {
if (statusBtnBack == 0) {
BACK = true;
}
delay(50);
}
statusEndBtnBack = statusBtnBack;
}
//----------------------------------------------------------------------------
//semua yang tampil di lcd ada di fungsi ini
void tampil() {
if (page == 1) {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(30, 0);
lcd.print("E-BIKE ");
if (menuItem == 1) {
lcd.setCursor(5, 17);
lcd.setTextColor(WHITE);
lcd.print("> kecepatan sepeda");
} else {
lcd.setCursor(5, 17);
lcd.setTextColor(WHITE);
lcd.print(" kecepatan sepeda");
}
if (menuItem == 2) {
lcd.setCursor(5, 27);
lcd.setTextColor(WHITE);
lcd.print("> nilai RPM");
} else {
lcd.setCursor(5, 27);
lcd.setTextColor(WHITE);
lcd.print(" nilai RPM");
}
if (menuItem == 3) {
lcd.setCursor(5, 37);
lcd.setTextColor(WHITE);
lcd.print("> nilai PWM");
} else {
lcd.setCursor(5, 37);
lcd.setTextColor(WHITE);
lcd.print(" menuItem 3");
}
if (menuItem == 4) {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> menuItem 4");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" menuItem 4");
}
if (menuItem == 5) {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> menuItem 5");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" menuItem 5");
}
if (menuItem == 6) {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> menuItem 6");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" menuItem 6");
}
if (menuItem == 7) {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> menuItem 7");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" menuItem 7");
}
if (menuItem == 8) {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> menuItem 8");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" menuItem 8");
}
if (menuItem == 9) {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> menuItem 9");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" menuItem 9");
}
} else if (page == 2) {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(25, 25);
lcd.print("nilai sensor gps module");
} else if (page == 3) {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(10, 15);
lcd.print("try reading sensor");
lcd.setCursor(30, 35);
lcd.print("nilai sensor dht22");
} else if (page == 4) {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(25, 25);
lcd.print("nilai sensor bme 280");
} else if (page == 5) {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(25, 25);
lcd.print("hal 5");
}
lcd.display();
}