#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Konfiguracja pinów I2C dla ESP32
#define SDA_PIN 21
#define SCL_PIN 22
// Adresy I2C
#define LCD_ADDR 0x27 // Jeśli nie działa, spróbuj 0x3F
#define OLED_ADDR 0x3C
// Konfiguracja wyświetlaczy
LiquidCrystal_I2C lcd(LCD_ADDR, 16, 2); // 16 kolumn, 2 wiersze
Adafruit_SSD1306 oled(128, 64, &Wire, -1);
void setup() {
Serial.begin(115200);
// Inicjalizacja I2C
Wire.begin(SDA_PIN, SCL_PIN);
Serial.println("\n=== TEST WYŚWIETLACZY ===");
// Skanowanie adresów I2C
scanI2C();
// Inicjalizacja LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LCD1602 OK!");
lcd.setCursor(0, 1);
lcd.print("ESP32 Ready");
Serial.println("LCD1602 zainicjalizowany");
// Inicjalizacja OLED
if(!oled.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println("BŁĄD: OLED nie znaleziony!");
while(1);
}
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(SSD1306_WHITE);
oled.setCursor(0, 0);
oled.println("OLED 128x64");
oled.println("Test OK!");
oled.setTextSize(2);
oled.println();
oled.println("ESP32");
oled.display();
Serial.println("OLED zainicjalizowany");
Serial.println("======================\n");
}
int counter = 0;
void loop() {
// Aktualizacja LCD
lcd.setCursor(0, 1);
lcd.print("Licznik: ");
lcd.print(counter);
lcd.print(" "); // Czyszczenie starych cyfr
// Aktualizacja OLED
oled.clearDisplay();
// Nagłówek
oled.setTextSize(1);
oled.setCursor(0, 0);
oled.println("=== WOKWI TEST ===");
// Licznik duży
oled.setTextSize(3);
oled.setCursor(20, 20);
oled.println(counter);
// Stopka
oled.setTextSize(1);
oled.setCursor(0, 56);
oled.print("Czas: ");
oled.print(millis()/1000);
oled.print("s");
oled.display();
// Informacja w Serial
Serial.print("Licznik: ");
Serial.print(counter);
Serial.print(" | Czas: ");
Serial.print(millis()/1000);
Serial.println("s");
counter++;
delay(1000);
}
// Funkcja skanująca urządzenia I2C
void scanI2C() {
Serial.println("Skanowanie I2C...");
byte count = 0;
for(byte i = 8; i < 120; i++) {
Wire.beginTransmission(i);
if(Wire.endTransmission() == 0) {
Serial.print("Znaleziono urządzenie: 0x");
Serial.println(i, HEX);
count++;
}
}
Serial.print("Znaleziono urządzeń: ");
Serial.println(count);
Serial.println();
}