// 'bat 0', 25x20px
const unsigned char epd_bitmap_bat_0 [] PROGMEM = {
0x3f, 0xff, 0xff, 0x00, 0x20, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x80,
0xe0, 0x00, 0x00, 0x80, 0xa0, 0x00, 0x00, 0x80, 0xa0, 0x00, 0x00, 0x80, 0xa0, 0x00, 0x00, 0x80,
0xa0, 0x00, 0x00, 0x80, 0xe0, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x80,
0x20, 0x00, 0x00, 0x80, 0x3f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define ANCHO 128
#define ALTO 64
#define OLED_RESET 4
Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET);
int pinBateria = 36;
int nivelBajo = 3102;
int nivelAlto = 4095;
unsigned long previousMillis = 0;
const long interval = 4000;
bool bat;
void setup() {
Serial.begin(9600);
Wire.begin();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay();
}
void loop() {
int lectura = analogRead(pinBateria);
int porcentaje_bateria = map(lectura, nivelBajo, nivelAlto, 0, 100);
porcentaje_bateria = constrain(porcentaje_bateria, 0, 100);
unsigned long currentMillis = millis();
oled.clearDisplay();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
bat = true;
}
if (porcentaje_bateria > 20) {
if (bat) {
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(32, 8);
oled.print("Bateria:");
oled.setCursor(32, 18);
oled.print(porcentaje_bateria);
oled.print("%");
}
// Icono batería
oled.drawBitmap(2, 3, epd_bitmap_bat_0, 25, 20, WHITE);
// Estado de red
oled.setTextSize(1);
oled.setCursor(2, 30);
oled.print("Estado de red: OK");
// Modo de operación
oled.setCursor(2, 42);
oled.print("Modo: 1 (Rand Bounce)");
// Línea divisoria
oled.drawLine(0, 54, 127, 54, WHITE);
// ID final
oled.setCursor(30, 56);
oled.print("CAM-SGT-UDEA");
}
else {
// Si la batería está baja, mostrar lo mismo para mantener uniformidad
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(32, 8);
oled.print("Nivel de bateria:");
oled.setCursor(32, 18);
oled.print(porcentaje_bateria);
oled.print("%");
oled.drawBitmap(2, 3, epd_bitmap_bat_0, 25, 20, WHITE);
oled.setCursor(2, 30);
oled.print("Estado de red: conectado");
oled.setCursor(2, 42);
oled.print("Modo: 1 (Random Bounce)");
oled.drawLine(0, 54, 127, 54, WHITE);
oled.setCursor(30, 56);
oled.print("CAM-SGT-UDEA");
}
oled.display();
Serial.println(lectura);
delay(2000);
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4
Loading
ssd1306
ssd1306