#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "EEPROM.h"
#define EEPROM_SIZE 1000
#define screenW 128
#define screenH 64
#define l1 32
#define l2 33
#define l3 25
#define l4 26
#define l5 27
#define l6 14
#define sw1 5
#define sw2 18
char tmp[100];
int secs = 0;
int mode = 1;
int minus = 0;
Adafruit_SSD1306 display(screenW, screenH, &Wire);
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
}
if (!EEPROM.begin(EEPROM_SIZE)) {
Serial.println("Failed init EEPROM");
delay(1000);
ESP.restart();
}
Serial.println("Success init EEPROM");
pinMode(sw1, INPUT_PULLUP);
pinMode(sw2, INPUT_PULLUP);
display.display();
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(500);
if ((digitalRead(sw1) == LOW) && (digitalRead(sw2) == LOW)) {
mode = 0;
pinMode(l1, OUTPUT);
pinMode(l2, OUTPUT);
pinMode(l3, OUTPUT);
pinMode(l4, OUTPUT);
pinMode(l5, OUTPUT);
pinMode(l6, OUTPUT);
} else {
ledcSetup(ledChannel, freq, resolution);
ledcAttachPin(l1, ledChannel);
ledcAttachPin(l2, ledChannel);
ledcAttachPin(l3, ledChannel);
ledcAttachPin(l4, ledChannel);
ledcAttachPin(l5, ledChannel);
ledcAttachPin(l6, ledChannel);
}
}
int potvalue = 0;
long last1000 = 0;
long last500 = 0;
bool x = false;
void loop() {
if (millis() - last1000 >= 1000) {
last1000 = millis();
secs++;
if (secs >= 60) {
secs = 0;
minus++;
if (minus >= 60) {
minus = 0;
}
}
Serial.printf("Time : %02d:%02d\nadc : %d\n", minus, secs,potvalue);
}
if (millis() - last500 >= 500) {
potvalue = analogRead(35);
if ((digitalRead(sw1) == LOW) && (digitalRead(sw2) == LOW)) {
if (mode == 1) {
pinMode(l1, OUTPUT);
pinMode(l2, OUTPUT);
pinMode(l3, OUTPUT);
pinMode(l4, OUTPUT);
pinMode(l5, OUTPUT);
pinMode(l6, OUTPUT);
mode = 0;
}
if (x) {
digitalWrite(l1, HIGH);
digitalWrite(l2, HIGH);
digitalWrite(l3, HIGH);
digitalWrite(l4, HIGH);
digitalWrite(l5, HIGH);
digitalWrite(l6, HIGH);
EEPROM.writeUInt(0,HIGH);
EEPROM.commit();
EEPROM.writeUInt(1,mode);
EEPROM.commit();
} else {
digitalWrite(l1, LOW);
digitalWrite(l2, LOW);
digitalWrite(l3, LOW);
digitalWrite(l4, LOW);
digitalWrite(l5, LOW);
digitalWrite(l6, LOW);
EEPROM.writeUInt(0,LOW);
EEPROM.commit();
EEPROM.writeUInt(1,mode);
EEPROM.commit();
}
x=!x;
} else {
if (mode == 0) {
ledcSetup(ledChannel, freq, resolution);
ledcAttachPin(l1, ledChannel);
ledcAttachPin(l2, ledChannel);
ledcAttachPin(l3, ledChannel);
ledcAttachPin(l4, ledChannel);
ledcAttachPin(l5, ledChannel);
ledcAttachPin(l6, ledChannel);
mode = 1;
}
ledcWrite(ledChannel, potvalue * 255 / 4095);
EEPROM.writeUInt(0,potvalue * 255 / 4095);
EEPROM.commit();
EEPROM.writeUInt(1,mode);
EEPROM.commit();
}
last500 = millis();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
sprintf(tmp, "Time : %02d:%02d ", minus, secs);
display.print(tmp);
display.setCursor(0, 10);
sprintf(tmp, "ADC : %04d ", potvalue);
display.print(tmp);
}
display.display();
}