#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width
#define SCREEN_HEIGHT 64 // OLED display height
#define OLED_RESET -1 // Reset pin (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Switch Pins
const int SW1 = 14;
const int SW2 = 15;
const int SW3 = 16;
void setup() {
Serial.begin(115200);
// Initialize switches
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(SW3, INPUT_PULLUP);
// Initialize OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C or 0x3D
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("System Ready");
display.setCursor(0,16);
display.println("Press any button");
display.display();
Serial.println("System initialized");
}
void loop() {
// Button 1 Pressed
if(digitalRead(SW1) == LOW) {
display.clearDisplay();
display.setCursor(0,0);
display.println("Button 1 active");
display.setCursor(0,16);
display.println("Sensor 1 activated");
display.display();
Serial.println("Button 1: Sensor 1 active");
delay(300); // Debounce
while(digitalRead(SW1) == LOW); // Wait for release
}
// Button 2 Pressed
if(digitalRead(SW2) == LOW) {
display.clearDisplay();
display.setCursor(0,0);
display.println("Button 2 active");
display.setCursor(0,16);
display.println("Sensor 2 activated");
display.display();
Serial.println("Button 2: Sensor 2 active");
delay(300);
while(digitalRead(SW2) == LOW);
}
// Button 3 Pressed
if(digitalRead(SW3) == LOW) {
display.clearDisplay();
display.setCursor(0,0);
display.println("Button 3 active");
display.setCursor(0,16);
display.println("Sensor 3 activated");
display.display();
Serial.println("Button 3: Sensor 3 active");
delay(300);
while(digitalRead(SW3) == LOW);
}
}
Loading
esp32-s2-devkitm-1
esp32-s2-devkitm-1