#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include "RTClib.h"
RTC_DS1307 rtc;
Adafruit_SSD1306 display(128, 64, &Wire, -1);
int page_counter=1 ; //To move beetwen pages
//-------Pins-----//
int up = 8; //Up button
// int down = 10; //Down button
//---------Storage debounce function-----//
boolean current_up = LOW;
boolean last_up=LOW;
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
//---- De-bouncing function for all buttons----//
boolean debounce(boolean last, int pin)
{
boolean current = digitalRead(pin);
if (last != current)
{
delay(5);
current = digitalRead(pin);
}
return current;
}
void loop() {
char buffer [16];
DateTime now = rtc.now();
uint8_t thisMin, thisHour;
thisMin = now.minute();
thisHour = now.hour();
sprintf (buffer, "%02d:%02d", thisHour, thisMin);
current_up = debounce(last_up, up); //Debounce for Up button
//----Page counter function to move pages----//
//Page Up
if (last_up== LOW && current_up == HIGH){ //When up button is pressed
display.clearDisplay(); //When page is changed, lcd clear to print new page
display.display();
if(page_counter <3){ //Page counter never higher than 3(total of pages)
page_counter= page_counter +1; //Page up
}
else{
page_counter= 1;
}
}
last_up = current_up;
//------- Switch function to write and show what you want---//
switch (page_counter) {
case 1:{ //Design of home page 1
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print(buffer);
display.drawLine(0, 10, 150, 10,WHITE);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(40,25);
display.print("Revogreen");
display.setTextSize(1);
display.setCursor(31,35);
display.print("Technologies");
display.display();
}
break;
case 2:{ //Design of home page 1
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print(buffer);
display.drawLine(0, 10, 150, 10,WHITE);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(11,50);
display.print("Volatge");
display.setTextSize(2);
display.setCursor(11,24);
display.print("2.5V");
display.setTextSize(1);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(80,50);
display.print("Current");
display.setTextSize(2);
display.setCursor(80,24);
display.print("2.5A");
display.display();
}
break;
case 3: { //Design of page 3
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print(buffer);
display.drawLine(0, 10, 150, 10,WHITE);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(11,50);
display.print("SOC");
display.setTextSize(2);
display.setCursor(11,24);
display.print("80%");
display.setTextSize(1);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(80,50);
display.print("Temp1");
display.setTextSize(2);
display.setCursor(80,24);
display.print("50");
display.drawRect(105,20,4,4,WHITE);
display.setCursor(110,24);
display.print("C");
display.display();
}
break;
case 4: { //Design of page 4
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print(buffer);
display.drawLine(0, 10, 150, 10,WHITE);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(3,10);
display.print("Last Logging done on:");
display.display();
}
break;
}//switch end
}//loop endLoading
ssd1306
ssd1306