#include <SPI.h>
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
#include"EEPROM.h"
#define EEPROM_SIZE 1000
#define SW1 5
#define SW2 17
#define SW3 16
#define LED 25
#define POT 34
#define OnboardLED 2
#define IDNisit 901
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT,&Wire);
long lasttime1sec =0;
long lasttime500ms =0;
char tempstring[100];
bool toogle = true;
const int ledPin = 25;
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;
int adcvalue = 0;
int adcRT = 0;
int mode =0;
int d1;
int address;
char charBuffer[100];
int var0;
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC,0x3c)){
Serial.println(F("SSD1306 allocation failed"));
}
if(!EEPROM.begin(EEPROM_SIZE)){
Serial.println("Failed EEPROM");
delay(1000);
ESP.restart();
}
Serial.println("Sucess EEPROM");
Serial.println("Write EEPROM Complete");
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(SW3, INPUT_PULLUP);
pinMode(OnboardLED, OUTPUT);
delay(2000);
display.clearDisplay();
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);
ledcSetup(ledChannel,freq,resolution);
ledcAttachPin(ledPin,ledChannel );
}
void loop() {
adcvalue = analogRead(POT);
adcRT = (adcvalue * 255/4095);
if((digitalRead(17) == HIGH)){ //SW2
address = 000;
if(digitalRead(5) == HIGH){
EEPROM.writeUChar(address,adcRT);
EEPROM.commit();
}
}
if((digitalRead(16) == HIGH)){//SW3
address = 901;
if(digitalRead(5) == HIGH){
EEPROM.writeUChar(address,adcRT);
EEPROM.commit();
}
}
d1 = EEPROM.readUChar(address);
ledcWrite(ledChannel, d1);
if(millis() - lasttime1sec >= 1000){
lasttime1sec = millis();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
sprintf(tempstring,"EEPROM ADC:%d",adcvalue);
display.print(tempstring);
display.setCursor(0,10);
sprintf(tempstring,"Address:0%03d (0x%s)",address,String(address,HEX));
display.print(tempstring);
display.setCursor(0,20);
sprintf(tempstring,"Data:0%03d ",d1 );
display.print(tempstring);
Serial.println(tempstring);
display.display();
}
if(millis() - lasttime500ms >= 500){
lasttime500ms = millis();
digitalWrite(OnboardLED,toogle);
toogle =!toogle;
}
}