#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define DHTTYPE DHT22
#define DHTPIN 2
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
DHT dht(DHTPIN, DHTTYPE);
#define btnUP 7
#define btnOK 6
#define btnDOWN 5
#define btnBACK 4
boolean statusBtnUP = false;
boolean statusBtnOK = false;
boolean statusBtnDOWN = false;
boolean statusBtnBACK = false;
boolean statusAkhirBtnUP = false;
boolean statusAkhirBtnOK = false;
boolean statusAkhirBtnDOWN = false;
boolean statusAkhirBtnBACK = false;
boolean UP = false;
boolean OK = false;
boolean DOWN = false;
boolean BACK = false;
int hal = 1;
int menuitem = 1;
void setup(){
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
dht.begin();
Serial.begin(115200);
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);
UPDitekan();
OKDitekan();
DOWNDitekan();
BACKDitekan();
//untuk btn UP
if(UP == true && hal == 1){
UP = false;
menuitem --;
if(menuitem < 1)menuitem = 4;
}
//untuk btn DOWN
if(DOWN && hal == 1){
DOWN = false;
menuitem ++;
if(menuitem > 4)menuitem = 1;
}
//untuk btn OK
if(OK == true){
OK = false;
if(menuitem == 1 && hal == 1){
hal = 2;
}else if(menuitem == 2 && hal == 1){
hal = 3;
}else if(menuitem == 3 && hal == 1){
hal = 4;
}else if(menuitem == 4 && hal ==1){
hal = 5;
}
}
//untuk btn BACK
if(BACK){
BACK = false;
if(hal == 2 || hal == 3 || hal == 4 || hal == 5){
hal = 1;
}
}
Serial.println(menuitem);
delay(200);
}
void UPDitekan(){
if(statusBtnUP != statusAkhirBtnUP){
if(statusBtnUP == 0){
UP = true;
}
delay(50);
}
statusAkhirBtnUP = statusBtnUP;
}
void OKDitekan(){
if(statusBtnOK != statusAkhirBtnOK){
if(statusBtnOK == 0){
OK = true;
}
delay(50);
}
statusAkhirBtnOK = statusBtnOK;
}
void DOWNDitekan(){
if(statusBtnDOWN != statusAkhirBtnDOWN){
if(statusBtnDOWN == 0){
DOWN = true;
}
delay(50);
}
statusAkhirBtnDOWN = statusBtnDOWN;
}
void BACKDitekan(){
if(statusBtnBACK != statusAkhirBtnBACK){
if(statusBtnBACK == 0){
BACK = true;
}
delay(50);
}
statusAkhirBtnBACK = statusBtnBACK;
}
// semua yang muncul pada LCD ada di fungsi ini
void tampil(){
float t = dht.readTemperature();
float h = dht.readHumidity();
if(hal == 1){
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(30, 0);
display.print("DAFTAR MENU");
if(menuitem == 1){
display.setCursor(5, 17);
display.print("> menuitem 1");
}else{
display.setCursor(5, 17);
display.print(" menuitem 1");
}
if(menuitem == 2){
display.setCursor(5, 27);
display.print("> menuitem 2");
}else{
display.setCursor(5, 27);
display.print(" menuitem 2");
}
if(menuitem == 3){
display.setCursor(5, 37);
display.print("> menuitem 3");
}else{
display.setCursor(5, 37);
display.print(" menuitem 3");
}
if(menuitem == 4){
display.setCursor(5, 47);
display.print("> menuitem 4");
}else{
display.setCursor(5, 47);
display.print(" menuitem 4");
}
}else if(hal == 2){
// display Temperature
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.print("Temperature: ");
display.setTextSize(2);
display.setCursor(0,10);
display.print(t);
display.print(" ");
display.setTextSize(1);
display.cp437(true);
display.write(167);
display.setTextSize(2);
display.print("C");
// display humidity
display.setTextSize(1);
display.setCursor(0, 35);
display.print("Humidity: ");
display.setTextSize(2);
display.setCursor(0, 45);
display.print(h);
display.print(" %");
}else if(hal == 3){
display.clearDisplay();
display.setCursor(25, 25);
display.setTextColor(WHITE);
display.setTextSize(1);
display.print("SUBREK3");
}else if(hal == 4){
display.clearDisplay();
display.setCursor(25, 25);
display.setTextColor(WHITE);
display.setTextSize(1);
display.print("SUBREK4");
}else if(hal == 5){
display.clearDisplay();
display.setCursor(25, 25);
display.setTextColor(WHITE);
display.setTextSize(1);
display.print("SUBREK5");
}
display.display();
}