#include <SPI.h>
#include <RTClib.h>
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
#define WIDTH 128
#define HEIGHT 64
#define OLED_RESET 4
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(WIDTH,HEIGHT,&Wire,OLED_RESET);
int selected = 0;
int entered = -1;
#define SERIAL_OPTION 0
RTC_DS1307 RTC;
void displaymenu(void){
int down = digitalRead(3);
int up = digitalRead(2);
int enter = digitalRead(5);
int back = digitalRead(8);
if (up == LOW && down == LOW){};
if (up == LOW){
selected++;
delay(200);
};
if(down == LOW){
selected--;
delay(200);
};
if (enter == LOW){
entered = selected;
};
if (back == LOW){
entered = -1;
};
const char *options[7]= {
"RENDANG",
"SATE AYAM",
"PECEL AYAM",
"KETOPRAK",
"CAP CAY",
"LONTONG SAYUR"
};
if (entered == -1){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIHLAH LAUKMU HARI INI DAN KEDEPANNYA: "));
display.println("");
for(int i = 0; i<7;i++){
if(i==selected){
display.setTextColor(SSD1306_BLACK, SSD1306_WHITE);
display.println(options[i]);}
else if(i != selected){
display.setTextColor(SSD1306_WHITE);
display.println(options[i]);}
}
}
else if(entered == 0){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIHLAH LAUKMU HARI INI: "));
display.println("Menu Option 1");
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.println("PESANANMU AKAN SEGERA DATANG");
}
else if(entered == 1){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIHLAH LAUKMU HARI INI: "));
display.println("Menu Option 2");
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.println("PESANANMU AKAN SEGERA DATANG");
}
else if(entered == 2){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIHLAH LAUKMU HARI INI: "));
display.println("Menu Option 3");
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.println("PESANANMU AKAN SEGERA DATANG");
}
else if(entered == 3){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIHLAH LAUKMU HARI INI: "));
display.println("Menu Option 4");
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.println("PESANANMU AKAN SEGERA DATANG");
}
else if(entered == 4){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIHLAH LAUKMU HARI INI: "));
display.println("Menu Option 5");
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.println("PESANANMU AKAN SEGERA DATANG");
}
else if(entered == 5){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIH LAUKMU HARI INI :"));
display.println("Menu Option 6");
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.println("PESANANMU AKAN SEGERA DATANG");
}
else if(entered == 6){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("PILIH LAUKMU HARI INI :"));
display.println("Menu Option 7");
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.println("PESANANMU AKAN SEGERA DATANG");
}
display.display();
else if (SERIAL_OPTION){
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(80,0);
display.println(now.year());Serial.print("/");
display.println(now.month());Serial.print("/");
display.println(now.day());Serial.print(" ");
display.println(now.hour());Serial.print(":");
display.println(now.minute());Serial.print(":");
display.print(now.second());Serial.print("\n");
}}
DateTime now = RTC.now();
void setup(){
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
RTC.begin();
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)){
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.drawPixel(10,10,SSD1306_WHITE);
display.display();
delay(2000);
}
void loop(){
displaymenu();
}