I got a bit further after a lot of trial an error. Seems I simply need to use type Display
, however I thought it wasn’t that simple because I keep getting errors about printf
:
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
- toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 2.0.1
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.1.0
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- SPI @ 2.0.0
Compiling .pioenvs/esp-printer-dashboard/src/main.cpp.o
In file included from src/main.cpp:74:
src/test.h: In function 'void test(esphome::display::Display&)':
src/test.h:27:108: error: no matching function for call to 'esphome::display::Display::printf(int, int, esphome::font::Font&, esphome::Color&, esphome::display::TextAlign, const char [3], const char*&)'
d_it.printf(80 * 1, -15 + 60 * 1, id(roboto16), p1s_1_color, TextAlign::CENTER, "%s", p1s_1_status_text);
^
In file included from src/esphome.h:17,
from src/main.cpp:3:
src/esphome/components/display/display.h:256:8: note: candidate: 'void esphome::display::Display::printf(int, int, esphome::display::BaseFont*, esphome::Color, esphome::display::TextAlign, const char*, ...)'
void printf(int x, int y, BaseFont *font, Color color, TextAlign align, const char *format, ...)
^~~~~~
src/esphome/components/display/display.h:256:8: note: no known conversion for argument 3 from 'esphome::font::Font' to 'esphome::display::BaseFont*'
src/esphome/components/display/display.h:268:8: note: candidate: 'void esphome::display::Display::printf(int, int, esphome::display::BaseFont*, esphome::Color, const char*, ...)'
void printf(int x, int y, BaseFont *font, Color color, const char *format, ...) __attribute__((format(printf, 6, 7)));
^~~~~~
src/esphome/components/display/display.h:268:8: note: no known conversion for argument 3 from 'esphome::font::Font' to 'esphome::display::BaseFont*'
src/esphome/components/display/display.h:279:8: note: candidate: 'void esphome::display::Display::printf(int, int, esphome::display::BaseFont*, esphome::display::TextAlign, const char*, ...)'
void printf(int x, int y, BaseFont *font, TextAlign align, const char *format, ...)
^~~~~~
src/esphome/components/display/display.h:279:8: note: no known conversion for argument 3 from 'esphome::font::Font' to 'esphome::display::BaseFont*'
src/esphome/components/display/display.h:290:8: note: candidate: 'void esphome::display::Display::printf(int, int, esphome::display::BaseFont*, const char*, ...)'
void printf(int x, int y, BaseFont *font, const char *format, ...) __attribute__((format(printf, 5, 6)));
^~~~~~
src/esphome/components/display/display.h:290:8: note: no known conversion for argument 3 from 'esphome::font::Font' to 'esphome::display::BaseFont*'
*** [.pioenvs/esp-printer-dashboard/src/main.cpp.o] Error 1
========================== [FAILED] Took 3.69 seconds ==========================
It seems like I can draw shapes no problem, but rendering text doesn’t work the same as it did when written in a lambda…