#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C // Default I2C address for SSD1306
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
// Initialize the display
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000); // Pause for 2 seconds
display.clearDisplay();
// Initialize analog pins
pinMode(34, INPUT); // GPIO 34 for 6V battery
pinMode(35, INPUT); // GPIO 35 for 12V battery
}
void loop() {
// Example: Display voltage percentage for 6V battery
int voltage6V = analogRead(34); // Read voltage from GPIO 34 for 6V battery
float voltagePercent6V = (voltage6V / 4095.0) * 100; // Convert to percentage (ESP32 has 12-bit ADC)
// Example: Display voltage percentage for 12V battery
int voltage12V = analogRead(35); // Read voltage from GPIO 35 for 12V battery
float voltagePercent12V = (voltage12V / 4095.0) * 100; // Convert to percentage
display.clearDisplay();
// Draw battery outline for 6V battery
display.drawRect(10, 10, 50, 25, SSD1306_WHITE); // Battery body
display.drawRect(60, 15, 5, 15, SSD1306_WHITE); // Battery terminal
// Draw battery bars for 6V battery
int bars6V = (voltagePercent6V / 100.0) * 4; // Calculate number of bars (0-4)
for (int i = 0; i < bars6V; i++) {
display.fillRect(12 + (i * 12), 12, 10, 21, SSD1306_WHITE); // Draw each bar
}
// Draw battery outline for 12V battery
display.drawRect(70, 10, 50, 25, SSD1306_WHITE); // Battery body
display.drawRect(120, 15, 5, 15, SSD1306_WHITE); // Battery terminal
// Draw battery bars for 12V battery
int bars12V = (voltagePercent12V / 100.0) * 4; // Calculate number of bars (0-4)
for (int i = 0; i < bars12V; i++) {
display.fillRect(72 + (i * 12), 12, 10, 21, SSD1306_WHITE); // Draw each bar
}
// Display voltage percentage for 6V battery
display.setCursor(0, 40);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.print("6V: ");
display.print(voltagePercent6V);
display.print("%");
// Display voltage percentage for 12V battery
display.setCursor(64, 40);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.print("12V: ");
display.print(voltagePercent12V);
display.print("%");
display.display();
delay(1000); // Update every second
}