#include "EEPROM.h"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define POT 34
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;
bool modeclock = true;
const int freq = 5000;
const int ledChanel = 0;
const int resolution = 8;
#define EEPROM_SIZE 100
#define Sw14 16
#define Sw15 17
#define Sw10 5
const int ledPin = 25;
int i = 0;
int Value = 0;
int fi = 0;
int fiValue = 0;
int indexs = 0;
int potValue = 0;
char charBuffer[100];
int var0, var1, var2, var3;
void setup() {
Serial.begin(115200);
pinMode(Sw14, INPUT);
pinMode(Sw15, INPUT);
pinMode(Sw10, INPUT);
ledcSetup(ledChanel, freq, resolution);
ledcAttachPin(ledPin, ledChanel);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
}
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);
if (!EEPROM.begin(EEPROM_SIZE)) {
Serial.println("Failed init EEPROM");
delay(1000);
ESP.restart();
}
Serial.println("Success init EEPROM");
var0 = EEPROM.readUChar(0);
var1 = EEPROM.readUChar(1);
ledcWrite(ledChanel, var0);
sprintf(charBuffer, "EEPROM Data>>> var0 %03d | var1 %03d | var2 %03d | var3 %03d\n", var0, var1, var2, var3);
Serial.println(charBuffer);
Serial.println("Read EEPROM Complete");
}
void loop() {
if (digitalRead(Sw15) == HIGH) {
indexs = 0 ;
}
else if (digitalRead(Sw14) == HIGH) {
indexs = 48 ;
}
if (digitalRead(Sw10) == HIGH) {
EEPROM.writeUChar(indexs, fiValue );
EEPROM.commit();
}
potValue = analogRead(POT);
fiValue = (potValue* 255) / 4095;
int d = EEPROM.readUChar(indexs);
ledcWrite(ledChanel, d);
if (millis() - lasttime500ms >= 500) {
lasttime500ms = millis();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
if (toogle == true) {
sprintf(tempstring, "EEPROM ADC%04d", potValue);
display.print(tempstring);
display.setCursor(0, 20);
sprintf(tempstring, "Address: %04d", indexs);
display.print(tempstring);
display.setCursor(0, 30);
sprintf(tempstring, "Data: %04d ", d);
display.print(tempstring);
display.display();
} else {
sprintf(tempstring, "EEPROM ADC%04d", potValue);
display.print(tempstring);
display.setCursor(0, 20);
sprintf(tempstring, "Address: %04d", indexs);
display.print(tempstring);
display.setCursor(0, 30);
sprintf(tempstring, "Data: %04d ", d);
display.print(tempstring);
display.display();
}
toogle = !toogle;
}
}