/*
-----------------------------------------
Project Jam Elektro v1.0 (On Going)
Created By Rifky Ananda Riwendra
Fitur :
- Jam Digital Real Time
- Tanggal dan Hari
- Tombol Kembali ke Home
- Menu (On Progress)
Cara menggunakan Jam :
1. Tekan Tombol Play
* Jika ingin ke Menu:
1. Tekan Potentiometer nya
2. Tekan tanda panah ke kanan pada keyboard
3. Tekan terus sampai "Putaran ke 5" pada Display
4. Selamat anda telah di menu
* Jika ingin kembali pada Halaman Jam Digital
1. Tekan Potentiometer nya
2. Tekan tanda panah ke kiri pada keyboard
3. Tekan tanda panah ke kiri sampai "Putaran ke 4" pada Display
4. Tekan Tombol Home yang berada di bawah Display
5. Selamat anda telah di Halaman Jam Digital
Fun Fact:
* Project ini dibikin pada saat libur semester 2
* Project ini rencananya akan membuat Produk seperti "Flipper Zero"
tetapi dalam bentuk jam tangan
-----------------------------------------
*/
#include <Wire.h>
#include <U8g2lib.h>
//lock
//RTC
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek_indo[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
// Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
void setup() {
rtc.begin();
u8g2.begin();
u8g2.setColorIndex(1);
pinMode(A0, INPUT);
//button input
pinMode(8, INPUT);
home();
}
void home(){
while (true){
u8g2.firstPage();
do {
// u8g2.clearBuffer(); // clear the complete internal memory
DateTime now = rtc.now();
char tanggalFull[32];
sprintf(tanggalFull, "%s, %d/%d/%d", daysOfTheWeek[now.dayOfTheWeek()], now.day(), now.month(), now.year()); // construct a string with the progress variable
// String tanggalFull = nama_hari + ", " + hari + "/" + bulan + "/" + tahun;
char jamFull[32];
sprintf(jamFull, "%d:%d:%d", now.hour(), now.minute(), now.second()); // construct a string with the progress variable
u8g2.setFont(u8g2_font_6x13_tf);
// u8g2.drawStr(10, 10, tanggalFull.c_str());
u8g2.drawStr(6, 10, tanggalFull);
u8g2.setFont(u8g2_font_6x13_tf);
// u8g2.drawStr(20, 30, jamFull.c_str());
u8g2.drawStr(20, 30, jamFull);
int value = analogRead(A0);
char putaranText[32]; // helper putaranText to construct a string to be displayed
// String putaranText = "Putaran ke " + String(value);
sprintf(putaranText, "Putaran ke %d", value); // construct a string with the progress variable
u8g2.setFont(u8g2_font_6x13_tf);
// u8g2.drawStr(20,50, putaranText.c_str());
u8g2.drawStr(20,50, putaranText);
if (value == 5) {
menu();
break;
}
// } while (u8g2.nextPage());
// u8g2.sendBuffer();
} while ( u8g2.nextPage() );
}
// while (true){
// }
// Serial.println("omaga2");
}
void loop() {
// delay(1000);
}
void menu() {
while (true){
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x13_tf);
u8g2.drawStr(0, 10, "[Menu]");
int value = analogRead(A0);
int value_button = digitalRead(8);
char putaranText[32]; // helper putaranText to construct a string to be displayed
// String putaranText = "Putaran ke " + String(value);
sprintf(putaranText, "%d", value); // construct a string with the progress variable
u8g2.setFont(u8g2_font_6x13_tf);
u8g2.drawStr(123, 9, putaranText);
// int newValue = digitalRead(8);
// int oldValue = LOW; // default/idle value for pin 8 is low.
// Check if the value was changed,
// by comparing it with the previous value.
// if(newValue != oldValue)
// {
// if(newValue == HIGH)
// {
// // u8g2.drawStr(20, 50, "Pressed!");
// // u8g2.sendBuffer();
// // // delay(5000);
// // u8g2.clearBuffer();
// home();
// break;
// }
// // Remember the value for the next time.
// oldValue = newValue;
// }
if (value_button == HIGH)
{
// u8g2.drawStr(20, 50, "Pressed!");
// u8g2.sendBuffer();
// u8g2.clearBuffer();
home();
break;
}
// delay(1000);
u8g2.sendBuffer();
}
}