#include <SPI.h> //Library SPI
#include <Wire.h> //Library Wire
#include <Adafruit_GFX.h> //Library GFX
#include <Adafruit_SSD1306.h> //Library OLED SSD1306
#include "RTClib.h"
#define UP_BUTTON 2
#define DOWN_BUTTON 3
#define OK_BUTTON 3
#define MENU_BUTTON 4
bool menu = false;
int cursor = 0;
RTC_DS1307 rtc;
char namaHari[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
// String formatNumber[60]={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59" };
#define SCREEN_WIDTH 128 //Panjang LCD OLED
#define SCREEN_HEIGHT 64 //Tinggi LCD OLED
#define OLED_RESET -1 //Pin reset terhubung dengan arduino
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
pinMode(UP_BUTTON, INPUT_PULLUP);
pinMode(DOWN_BUTTON, INPUT_PULLUP);
pinMode(OK_BUTTON, INPUT_PULLUP);
pinMode(MENU_BUTTON, INPUT_PULLUP);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { //Alamat OLED
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
if (! rtc.begin()) {
Serial.println("RTC TIDAK TERBACA");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//update rtc dari waktu komputer
}
}
void menuList() {
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 0);
display.print("Menu-mode");
// ================================================================================
display.setTextSize(1);
display.setTextColor(WHITE); //Instruksi untuk mengatur warna
display.setCursor(0, 16);
display.print(" Menu 1");
display.setCursor(0, 24);
display.print(" Menu 2");
display.setCursor(0, 32);
display.print(" Menu 3");
display.setCursor(0, 40);
display.print(" Menu 4");
display.setCursor(0, 48);
display.print(" Menu 5");
display.setCursor(0, 56);
display.print(" Menu 6");
display.display();
}
void cursorList() {
// display.clearDisplay();
// ================================================================================
display.setTextSize(1);
display.setTextColor(WHITE);
if (cursor == 0) {
display.setCursor(0, 16);
display.print(">");
} else if (cursor == 1) {
display.setCursor(0, 24);
display.print(">");
} else if (cursor == 2) {
display.setCursor(0, 32);
display.print(">");
} else if (cursor == 3) {
display.setCursor(0, 40);
display.print(">");
} else if (cursor == 4) {
display.setCursor(0, 48);
display.print(">");
} else if (cursor == 5) {
display.setCursor(0, 56);
display.print(">");
}
display.display();
}
void myButton() {
if (digitalRead(MENU_BUTTON) == LOW && menu == false) {
menu = true;
} else if (digitalRead(MENU_BUTTON) == LOW && menu == true) {
menu = false;
}
if (digitalRead(UP_BUTTON) == LOW && menu == true) {
if (cursor != 5) {
cursor ++;
} else {
cursor = 0;
}
}
if (digitalRead(DOWN_BUTTON) == LOW && menu == true) {
if (cursor != 0) {
cursor --;
} else {
cursor = 5;
}
}
}
void myShow() {
if (menu == false) {
DateTime now = rtc.now();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Muwatok-Dev");
// ================================================================================
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 12);
// display.print("00:00:00");
display.print(now.hour(), DEC);
display.print(":");
display.print(now.minute(), DEC);
display.print(":");
display.println(now.second(), DEC);
// ================================================================================
display.setTextSize(1);
display.setCursor(0, 30);
display.print(namaHari[now.dayOfTheWeek()]);
display.print(", ");
display.print(now.day());
display.print("-");
display.print(now.month());
display.print("-");
display.print(now.year());
display.display();
} else {
menuList();
cursorList();
}
}
void loop() {
myButton();
myShow();
// Serial.println(cursor);
delay(100);
}