feat(display): allow drawing via buffer

This commit is contained in:
2026-04-29 00:27:27 +02:00
parent 0f807a1867
commit 6c349c2ada
2 changed files with 12 additions and 1 deletions
+3
View File
@@ -12,9 +12,12 @@ class Display {
void begin(); void begin();
void clear(); void clear();
void drawBuffer(String buffer[]);
void drawMenu(Menu& menu); void drawMenu(Menu& menu);
LiquidCrystal_I2C& getLCD(); LiquidCrystal_I2C& getLCD();
private: private:
uint8_t rows;
uint8_t cols;
LiquidCrystal_I2C lcd; LiquidCrystal_I2C lcd;
}; };
+9 -1
View File
@@ -1,7 +1,7 @@
#include "display.hpp" #include "display.hpp"
// Initialize the LCD display with the specified number of columns and rows, using the I2C address. // Initialize the LCD display with the specified number of columns and rows, using the I2C address.
Display::Display(uint8_t addr, uint8_t cols, uint8_t rows) : lcd(addr, cols, rows) {} Display::Display(uint8_t addr, uint8_t cols, uint8_t rows) : rows(rows), cols(cols), lcd(addr, cols, rows) {}
void Display::begin() { void Display::begin() {
lcd.init(); lcd.init();
@@ -12,6 +12,14 @@ void Display::clear() {
lcd.clear(); lcd.clear();
} }
void Display::drawBuffer(String buffer[]) {
clear();
for (size_t i = 0; i < rows; i++) {
lcd.setCursor(0, i);
lcd.print(buffer[i].substring(0, cols)); // Ensure we only print up to the number of columns
}
}
void Display::drawMenu(Menu &menu) { void Display::drawMenu(Menu &menu) {
clear(); clear();
size_t currentItemIndex = menu.getCurrentItemIndex(); size_t currentItemIndex = menu.getCurrentItemIndex();