#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <string.h>
#define SW1 26
#define SW2 27
#define POT 34
#define LDR 39
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
long lasttime1sec = 0;
long lasttime500ms = 0;
int sectime = 0;
int mintime = 0;
char tempstring[100];
bool toogle = true;
int potvalue = 3000;
int ldrvalue = 2000;
int input=10;
bool modeclock = false;
void setup() {
Serial.begin(115200);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
}
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
display.display();
delay(2000);
display.clearDisplay();
// Test Draw Char
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(F("HELLO"));
display.setCursor(0, 15);
display.println(F("ESP32"));
display.display();
delay(2000);
}
void loop() {
if(digitalRead(SW1) == LOW){
modeclock = true;
Serial.println("true");
}
if(digitalRead(SW2) == LOW){
modeclock = false;
Serial.println("false");
}
if (millis() - lasttime1sec >= 1000) {
lasttime1sec = millis();
if(modeclock == true){
sectime++;
if (sectime >= 60) {
sectime = 0;
mintime++;
if (mintime >= 60) {
mintime = 0;
}
}
}
}
if(Serial.available()>0){
input = Serial.parseInt();
}
if(input == 1){
modeclock = true;
}
if(input == 2){
modeclock = false;
}
if (millis() - lasttime500ms >= 500) {
lasttime500ms = millis();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
ldrvalue = analogRead(LDR);
potvalue = analogRead(POT);
if (toogle == true) {
sprintf(tempstring, "Time %02d:%02d", mintime, sectime);
display.print(tempstring);
display.setCursor(0, 10);
sprintf(tempstring, "LDR DEC:%04d VOLT:%.1fV", ldrvalue, ((float)ldrvalue*3.3/4095));
display.print(tempstring);
display.setCursor(0, 20);
sprintf(tempstring, "POT DEC:%04d VOLT:%.1fV", potvalue, ((float)potvalue*3.3/4095));
display.print(tempstring);
display.display();
} else {
sprintf(tempstring, "Time %02d %02d", mintime, sectime);
display.print(tempstring);
display.setCursor(0, 10);
sprintf(tempstring, "LDR DEC:%04d VOLT:%.1fV", ldrvalue, ((float)ldrvalue*3.3/4095));
display.print(tempstring);
display.setCursor(0, 20);
sprintf(tempstring, "POT DEC:%04d VOLT:%.1fV", potvalue, ((float)potvalue*3.3/4095));
display.print(tempstring);
display.display();
}
toogle = !toogle;
}
}