#include <Wire.h>
//#include <WiFi.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SH1106G display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// WiFi
const char* ssid="Wi-Fi";
const char* password="adminadmin";
// Дані
float voltage = 12.5;
float current = 5.3;
float power = 60.0;
float capacity = 100.0;
float current1 = 2.0;
float power1 = 40.0;
float capacity1 = 80.0;
// Іконки (bitmap 16x16)
const unsigned char iconVolt [] PROGMEM = {0x04,0x08,0x08,0x10,0x10,0x3E,0x1C,0x04,0x08,0x08,0x10,0x10,0x08,0x20};
const unsigned char iconAmp [] PROGMEM = {0x3C,0x42,0x81,0x81,0x81,0x81,0x42,0x3C};
const unsigned char iconPower [] PROGMEM = {0x18,0x3C,0x7E,0xFF,0x7E,0x3C,0x18};
const unsigned char iconBattery [] PROGMEM = {0x3E,0x7F,0x41,0x41,0x41,0x41,0x7F,0x3E};
const unsigned char iconWiFi [] PROGMEM = {0x00,0x18,0x24,0x42,0x81,0x00,0x18,0x00,0x3C,0x00,0x7E,0x00,0xFF,0x00};
void drawPanel()
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
// ⚡ Напруга
display.drawBitmap(0,0,iconVolt,16,16,SH110X_WHITE);
display.drawRect(0,0,60,16,SH110X_WHITE);
display.setCursor(18,2);
display.print(voltage,1);
display.print("V");
// ⬆ Струм
display.drawBitmap(0,18,iconAmp,16,16,SH110X_WHITE);
display.drawRect(0,18,60,16,SH110X_WHITE);
display.setCursor(18,20);
display.print(current,1);
display.print("A");
// 💡 Потужність
display.drawBitmap(0,36,iconPower,16,16,SH110X_WHITE);
display.drawRect(0,36,60,16,SH110X_WHITE);
display.setCursor(18,38);
display.print(power,1);
display.print("W");
// 🔋 Ємність
display.drawBitmap(0,54,iconBattery,16,16,SH110X_WHITE);
display.drawRect(0,54,60,16,SH110X_WHITE);
display.setCursor(18,56);
display.print(capacity,0);
display.print("Wh");
// Channel 2 - current1
display.drawBitmap(70,0,iconAmp,16,16,SH110X_WHITE);
display.drawRect(70,0,58,16,SH110X_WHITE);
display.setCursor(90,2);
display.print(current1,1);
display.print("A");
// Channel 2 - power1
display.drawBitmap(70,18,iconPower,16,16,SH110X_WHITE);
display.drawRect(70,18,58,16,SH110X_WHITE);
display.setCursor(90,20);
display.print(power1,1);
display.print("W");
/*
// Channel 2 - capacity1
display.drawBitmap(70,36,iconBattery,16,16,SH110X_WHITE);
display.drawRect(70,36,58,16,SH110X_WHITE);
display.setCursor(90,38);
display.print(capacity1,0);
display.print("Wh");
// WiFi
display.drawBitmap(70,54,iconWiFi,16,16,SH110X_WHITE);
display.setCursor(90,56);
// display.print(WiFi.RSSI());
*/
display.display();
}
void setup()
{
Serial.begin(115200);
if(!display.begin(0x3C,true))
{
Serial.println("OLED не знайдено");
while(1);
}
// WiFi.begin(ssid,password);
//while(WiFi.status()!=WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Підключено до WiFi");
display.clearDisplay();
}
void loop()
{
// Симуляція зміни даних
voltage += random(-5,5)*0.01;
current += random(-5,5)*0.01;
power += random(-5,5)*0.05;
capacity += random(-5,5)*0.1;
current1 += random(-5,5)*0.01;
power1 += random(-5,5)*0.05;
capacity1 += random(-5,5)*0.1;
drawPanel();
delay(500);
}