Первый текст на экране
Подключаем встроенный OLED 72×40 через U8g2.
Экран подключён к шине I2C: SDA — GPIO5, SCL — GPIO6. Контроллер — SSD1306, но видна только часть его памяти: 72 точки в ширину и 40 в высоту. В U8g2 для этого есть отдельный конструктор, который сам учитывает смещение.
#include <U8g2lib.h>
#include <Wire.h>
// Встроенный экран 0.42": контроллер SSD1306, видимая область 72×40.
// Аргументы: поворот, вывод сброса (нет), SCL = GPIO6, SDA = GPIO5.
U8G2_SSD1306_72X40_ER_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, 6, 5);
void setup() {
u8g2.begin();
}
void loop() {
u8g2.clearBuffer(); // очистить картинку в памяти
u8g2.drawFrame(0, 0, 72, 40); // рамка по краю экрана
u8g2.setFont(u8g2_font_6x10_tf);
u8g2.drawStr(6, 16, "Hello!"); // x, y — y задаёт нижнюю линию текста
u8g2.drawStr(6, 30, "ESP32-C3");
u8g2.sendBuffer(); // отправить картинку на экран
delay(1000);
}Как рисует U8g2
- Всё рисуется в буфер в памяти, а
sendBuffer()отправляет его на экран целиком. - Координаты: (0, 0) — левый верхний угол, (71, 39) — правый нижний.
- У текста
y— это нижняя линия букв, а не верх.
Экран показывает картинку криво или со сдвигом? Убедитесь, что используется именно U8G2_SSD1306_72X40_ER_F_HW_I2C, а не конструктор для 128×64.