#include <EEPROM.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define EEPROM_SIZE 4056
#define POT 34
#define LDR 39
#define LED 25
#define sw 5
int pot,ldr,now,nowpot,nowcov;
int suit(int value)
{
return (value * 255) / 4095;
}
Adafruit_SSD1306 display(SCREEN_WIDTH,SCREEN_HEIGHT, &Wire);
void setup() {
pinMode(sw, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(115200);
if (!EEPROM.begin(EEPROM_SIZE)) {
Serial.println("Failed init EEPROM");
delay(1000);
ESP.restart();
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
}
pot = analogRead(POT);
}
void showoled(int add,int value,int cov,bool key)
{
if(key)
{
display.clearDisplay();
display.display();
display.setTextSize(0.5);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(F("ON"));
display.setCursor(60,0);
display.println(F("ADC : "));
display.setCursor(80,0);
display.println(value);
display.setCursor(0,15);
display.println(F("Address : "));
display.setCursor(60,15);
display.println(add);
display.setCursor(0,25);
display.println(F("Data : "));
display.setCursor(40,25);
display.println(cov);
display.display();
}
else
{
display.clearDisplay();
display.display();
display.setTextSize(0.5);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(F("OFF"));
display.setCursor(60,0);
display.println(F("ADC : "));
display.setCursor(80,0);
display.println(value);
display.setCursor(0,15);
display.println(F("Address : "));
display.setCursor(60,15);
display.println(add);
display.setCursor(0,25);
display.println(F("Data : "));
display.setCursor(40,25);
display.println(cov);
display.display();
}
}
int conv,lasttime,switcho = 0;
void loop() {
if(millis() - lasttime>1000)
{
lasttime = millis();
pot = analogRead(POT);
conv = suit(pot);
if(digitalRead(sw) == LOW)
{
EEPROM.writeUChar(0,switcho);
EEPROM.commit();
EEPROM.writeUChar(82,conv);
EEPROM.commit();
if(switcho == 1)
{
switcho = 0;
}
else
{
switcho = 1;
}
Serial.println(switcho);
}
else
{
nowpot = pot;
nowcov = suit(pot);
EEPROM.writeUChar(82,nowpot);
EEPROM.commit();
if(switcho == 1)
{
showoled(now,nowpot,nowcov,true);
analogWrite(LED,nowcov);
}
else if(switcho == 0)
{
showoled(now,nowpot,nowcov,false);
}
}
}
}