15 #ifndef WS_DISP_DRV_ST7789 16 #define WS_DISP_DRV_ST7789 19 #include <Adafruit_ST7789.h> 21 #define ST7789_STATUSBAR_HEIGHT 20 22 #define ST7789_STATUSBAR_ICON_SZ 16 23 #define ST7789_STATUSBAR_ICON_SPACING \ 25 #define ST7789_STATUSBAR_ICON_MARGIN \ 49 int16_t rst = -1, int16_t miso = -1)
50 :
dispDrvBase(cs, dc, mosi, sck, rst, miso), _display(nullptr) {}
58 _display->fillScreen(ST77XX_BLACK);
63 #if defined(ARDUINO_FUNHOUSE_ESP32S2) 64 digitalWrite(TFT_BACKLIGHT, LOW);
65 #elif defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S3_REVTFT) || \ 66 defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S3_TFT) || \ 67 defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_REVTFT) || \ 68 defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT) 69 digitalWrite(TFT_BACKLITE, LOW);
85 _display->fillScreen(ST77XX_BLACK);
86 _display->setTextColor(ST77XX_WHITE);
87 _display->setTextWrap(
false);
90 #if defined(ARDUINO_FUNHOUSE_ESP32S2) 91 pinMode(TFT_BACKLIGHT, OUTPUT);
92 digitalWrite(TFT_BACKLIGHT, HIGH);
93 #elif defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S3_REVTFT) || \ 94 defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S3_TFT) || \ 95 defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_REVTFT) || \ 96 defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT) 97 pinMode(TFT_BACKLITE, OUTPUT);
98 digitalWrite(TFT_BACKLITE, HIGH);
171 _display->fillScreen(ST77XX_BLACK);
178 _display->setTextSize(1);
179 _display->setTextColor(ST77XX_BLACK);
180 _display->setCursor(5, 6);
181 _display->print(io_username);
205 _display->setTextColor(ST77XX_WHITE);
231 if (!update_rssi && !update_mqtt && !update_battery)
256 }
else if (rssi < -50 && rssi >= -60) {
258 }
else if (rssi < -60 && rssi >= -70) {
260 }
else if (rssi < -70 && rssi >= -80) {
288 if (_display ==
nullptr)
301 size_t msg_size = strlen(message);
304 _display->setCursor(0, y_idx);
305 for (
size_t i = 0; i < msg_size && c_idx < msg_size; i++) {
306 if (y_idx + line_height >
_height)
308 if (message[i] ==
'\\' && i + 1 < msg_size &&
309 (message[i + 1] ==
'n' || message[i + 1] ==
'r')) {
311 if (message[i + 1] ==
'r' && i + 3 < msg_size &&
312 message[i + 2] ==
'\\' && message[i + 3] ==
'n') {
314 if (y_idx + line_height >
_height)
316 y_idx += line_height;
317 _display->setCursor(0, y_idx);
319 }
else if (message[i + 1] ==
'n') {
321 if (y_idx + line_height >
_height)
323 y_idx += line_height;
324 _display->setCursor(0, y_idx);
327 }
else if (message[i] == 0xC2 && message[i + 1] == 0xB0) {
329 _display->write(
char(247));
332 _display->print(message[i]);
338 Adafruit_ST7789 *_display;
341 #endif // WS_DISP_DRV_ST7789 static const unsigned char * batteryIcon(uint8_t bat)
Selects the battery icon for a battery level.
Definition: dispDrvSt7789.h:110
void updateStatusBar(int8_t rssi, uint8_t bat, bool mqtt_status) override
Updates the status bar with current information (battery level, connectivity status, etc).
Definition: dispDrvSt7789.h:219
const unsigned char epd_bmp_bat_full[]
battery-full-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:70
int _statusbar_icons_y
Y position of status bar icons.
Definition: dispDrvBase.h:189
const unsigned char epd_bmp_wifi_fair[]
wifi-fair-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:46
const unsigned char epd_bmp_cloud_offline[]
cloud-xmark-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:30
int _statusbar_icon_battery_x
X position of battery icon.
Definition: dispDrvBase.h:190
Driver for ST7789-based TFT displays.
Definition: dispDrvSt7789.h:31
const unsigned char epd_bmp_bat_25[]
battery-25-thin-full icon (16x16px)
Definition: icons.h:145
const unsigned char epd_bmp_wifi_no_signal[]
wifi-slash-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:62
#define ST7789_STATUSBAR_ICON_MARGIN
Default margin from edge of display to status bar icons.
Definition: dispDrvSt7789.h:25
uint8_t _text_sz
Text size for displaying a message.
Definition: dispDrvBase.h:184
#define ST7789_STATUSBAR_HEIGHT
Default status bar height.
Definition: dispDrvSt7789.h:21
dispDrvSt7789(int16_t cs, int16_t dc, int16_t mosi, int16_t sck, int16_t rst=-1, int16_t miso=-1)
Constructor for the ST7789 display driver.
Definition: dispDrvSt7789.h:48
int8_t _statusbar_rssi
RSSI value for status bar.
Definition: dispDrvBase.h:193
#define ST7789_STATUSBAR_ICON_SZ
Default status bar icon size.
Definition: dispDrvSt7789.h:22
#define ST7789_STATUSBAR_ICON_SPACING
Default spacing between status bar icons.
Definition: dispDrvSt7789.h:23
uint8_t _rotation
Rotation of the display.
Definition: dispDrvBase.h:187
bool begin() override
Attempts to initialize the ST7789 TFT driver.
Definition: dispDrvSt7789.h:77
const unsigned char tft_bmp_logo_240240[]
Wippersnapper logo, 240x240px.
Definition: splash.h:365
int _statusbar_icon_cloud_x
X position of cloud icon.
Definition: dispDrvBase.h:192
int16_t _pin_rst
Reset pin.
Definition: dispDrvBase.h:177
void showSplash() override
Displays the splash screen on the display.
Definition: dispDrvSt7789.h:144
int16_t _width
Width of the display.
Definition: dispDrvBase.h:186
const unsigned char epd_bmp_wifi_full[]
wifi-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:38
const unsigned char tft_bmp_logo_240135[]
Wippersnapper logo, 296x128px.
Definition: splash.h:22
virtual void writeMessage(const char *message) override
Writes a message to the display.
Definition: dispDrvSt7789.h:287
const unsigned char epd_bmp_bat_50[]
battery-50-thin-full icon (16x16px)
Definition: icons.h:120
const unsigned char epd_bmp_cloud_online[]
cloud-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:22
int16_t _height
Height of the display.
Definition: dispDrvBase.h:185
bool _statusbar_mqtt_connected
MQTT connection status for the status bar.
Definition: dispDrvBase.h:195
Abstract base class for display drivers. This class provides a common interface for all display drive...
Definition: dispDrvBase.h:28
void drawBatteryIcon(uint8_t bat) override
Draws the battery icon based on the current battery level.
Definition: dispDrvSt7789.h:127
~dispDrvSt7789()
Destructor for the ST7789 display driver.
Definition: dispDrvSt7789.h:55
int16_t _pin_cs
Chip Select pin.
Definition: dispDrvBase.h:178
virtual void drawStatusBar(const char *io_username) override
Draws a status bar at the top of the display.
Definition: dispDrvSt7789.h:166
const unsigned char epd_bmp_wifi_weak[]
wifi-weak-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:54
const unsigned char epd_bmp_bat_empty[]
battery-empty-thin-full icon (16x16px)
Definition: icons.h:170
int16_t _pin_dc
Data/Command pin.
Definition: dispDrvBase.h:176
uint8_t _statusbar_bat
Battery level (%) for the status bar.
Definition: dispDrvBase.h:194
const unsigned char epd_bmp_bat_75[]
battery-75-thin-full icon (16x16px)
Definition: icons.h:95
int _statusbar_icon_wifi_x
X position of WiFi icon.
Definition: dispDrvBase.h:191