Nextion draw QR code at runtime (#6027)

This commit is contained in:
Edward Firmo 2024-01-09 01:47:48 +01:00 committed by GitHub
parent 2bb5343d27
commit 869cdf122d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 0 deletions

View file

@ -750,6 +750,50 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
*/
void filled_circle(int center_x, int center_y, int radius, Color color);
/**
* Draws a QR code in the screen
* @param x1 The top left x coordinate to start the QR code.
* @param y1 The top left y coordinate to start the QR code.
* @param content The content of the QR code (as a plain text - Nextion will generate the QR code).
* @param size The size (in pixels) for the QR code. Defaults to 200px.
* @param background_color The background color to draw with (as rgb565 integer). Defaults to 65535 (white).
* @param foreground_color The foreground color to draw with (as rgb565 integer). Defaults to 0 (black).
* @param logo_pic The picture id for the logo in the center of the QR code. Defaults to -1 (no logo).
* @param border_width The border width (in pixels) for the QR code. Defaults to 8px.
*
* Example:
* ```cpp
* it.qrcode(25, 25, "WIFI:S:MySSID;T:WPA;P:MyPassW0rd;;");
* ```
*
* Draws a QR code with a Wi-Fi network credentials starting at the given coordinates (25,25).
*/
void qrcode(int x1, int y1, const char *content, int size = 200, uint16_t background_color = 65535,
uint16_t foreground_color = 0, int logo_pic = -1, uint8_t border_width = 8);
/**
* Draws a QR code in the screen
* @param x1 The top left x coordinate to start the QR code.
* @param y1 The top left y coordinate to start the QR code.
* @param content The content of the QR code (as a plain text - Nextion will generate the QR code).
* @param size The size (in pixels) for the QR code. Defaults to 200px.
* @param background_color The background color to draw with (as Color). Defaults to 65535 (white).
* @param foreground_color The foreground color to draw with (as Color). Defaults to 0 (black).
* @param logo_pic The picture id for the logo in the center of the QR code. Defaults to -1 (no logo).
* @param border_width The border width (in pixels) for the QR code. Defaults to 8px.
*
* Example:
* ```cpp
* auto blue = Color(0, 0, 255);
* auto red = Color(255, 0, 0);
* it.qrcode(25, 25, "WIFI:S:MySSID;T:WPA;P:MyPassW0rd;;", 150, blue, red);
* ```
*
* Draws a QR code with a Wi-Fi network credentials starting at the given coordinates (25,25) with size of 150px in
* red on a blue background.
*/
void qrcode(int x1, int y1, const char *content, int size, Color background_color = Color(255, 255, 255),
Color foreground_color = Color(0, 0, 0), int logo_pic = -1, uint8_t border_width = 8);
/** Set the brightness of the backlight.
*
* @param brightness The brightness percentage from 0 to 1.0.

View file

@ -294,6 +294,19 @@ void Nextion::filled_circle(int center_x, int center_y, int radius, Color color)
display::ColorUtil::color_to_565(color));
}
void Nextion::qrcode(int x1, int y1, const char *content, int size, uint16_t background_color,
uint16_t foreground_color, int logo_pic, uint8_t border_width) {
this->add_no_result_to_queue_with_printf_("qrcode", "qrcode %d,%d,%d,%d,%d,%d,%d,\"%s\"", x1, y1, size,
background_color, foreground_color, logo_pic, border_width, content);
}
void Nextion::qrcode(int x1, int y1, const char *content, int size, Color background_color, Color foreground_color,
int logo_pic, uint8_t border_width) {
this->add_no_result_to_queue_with_printf_(
"qrcode", "qrcode %d,%d,%d,%d,%d,%d,%d,\"%s\"", x1, y1, size, display::ColorUtil::color_to_565(background_color),
display::ColorUtil::color_to_565(foreground_color), logo_pic, border_width, content);
}
void Nextion::set_nextion_rtc_time(ESPTime time) {
this->add_no_result_to_queue_with_printf_("rtc0", "rtc0=%u", time.year);
this->add_no_result_to_queue_with_printf_("rtc1", "rtc1=%u", time.month);