6#include "helper/light_controller.h"
7#include "helper/mup_display.h"
8#include "hardware/max72xx_digits.h"
14 static const char *version;
21 LightController light;
34 DisplayDigitsMAX72XX(String name, uint8_t csPin, uint8_t hDisplays = 1, uint8_t vDisplays = 1,
36 :
MuppletDisplay(name, 0), display(csPin, hDisplays, vDisplays, length) {
44 void begin(Scheduler *_pSched,
bool initialState =
false) {
46 tID = pSched->add([
this]() { this->loop(); }, name, 80000L);
48 pSched->subscribe(tID, name +
"/display/#", [
this](String topic, String msg, String orig) {
49 this->commandParser(topic.substring(name.length() + 9), msg, name +
"/display");
51 pSched->subscribe(tID, name +
"/light/#", [
this](String topic, String msg, String orig) {
52 this->light.commandParser(topic.substring(name.length() + 7), msg);
57#ifdef USTD_FEATURE_PROGRAMPLAYER
65 light.begin([
this](
bool state,
double level,
bool control,
66 bool notify) { this->onLightControl(state, level, control, notify); },
73#ifdef USTD_FEATURE_PROGRAMPLAYER
78 void onLightControl(
bool state,
double level,
bool control,
bool notify) {
79 uint8_t intensity = (level * 15000) / 1000;
87 pSched->publish(name +
"/light/unitbrightness", String(level, 3));
88 pSched->publish(name +
"/light/state", state ?
"on" :
"off");
92 virtual void getDimensions(int16_t &width, int16_t &height) {
93 width = display.
width();
97 virtual bool getTextWrap() {
101 virtual void setTextWrap(
bool wrap) {
105 virtual FontSize getTextFontSize() {
113 virtual uint8_t getTextFontCount() {
117 virtual void setTextFont(uint8_t font, int16_t baseLineAdjustment) {
120 virtual void setTextColor(uint16_t fg, uint16_t bg) {
123 virtual void getCursor(int16_t &x, int16_t &y) {
128 virtual void setCursor(int16_t x, int16_t y) {
132 virtual void displayClear(int16_t x, int16_t y, int16_t w, int16_t h) {
137 virtual void displayClear(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t bg) {
142 virtual void displayPrint(String content,
bool ln =
false) {
144 display.println(content);
146 display.print(content);
151 virtual bool displayFormat(int16_t x, int16_t y, int16_t w, int16_t align, String content,
152 uint8_t font, uint16_t color, uint16_t bg) {
158#ifdef USTD_FEATURE_PROGRAMPLAYER
159 virtual bool initNextCharDimensions(ProgramItem &item) {
160 while (charPos < item.content.length()) {
161 charX = display.
getCharLen(item.content[charPos],
false);
164 if (item.content[charPos] ==
' ') {
169 }
else if (item.content[charPos] ==
' ') {
181const char *DisplayDigitsMAX72XX::version =
"0.1.0";
The MAX72XX Digits Display Class.
Definition: max72xx_digits.h:70
int16_t width() const
Definition: max72xx_digits.h:314
int16_t height() const
Definition: max72xx_digits.h:321
int16_t getCursorY() const
Definition: max72xx_digits.h:342
bool printFormatted(int16_t x, int16_t y, int16_t w, int16_t align, String content)
Definition: max72xx_digits.h:208
void setIntensity(uint8_t intensity)
Definition: max72xx_digits.h:133
uint8_t getCharLen(unsigned char c, bool firstChar=false)
Definition: max72xx_digits.h:350
bool getTextWrap() const
Definition: max72xx_digits.h:328
void begin()
Definition: max72xx_digits.h:108
int16_t getCursorX() const
Definition: max72xx_digits.h:335
void setCursor(int16_t x, int16_t y)
Definition: max72xx_digits.h:149
void write()
Definition: max72xx_digits.h:283
void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint8_t pattern=B00000000)
Definition: max72xx_digits.h:184
void setTextWrap(bool w)
Definition: max72xx_digits.h:172
void setPowerSave(bool powersave)
Definition: max72xx_digits.h:126
The base class for all display mupplets.
Definition: mup_display.h:24
The muwerk namespace.
Definition: display_digits_max72xx.h:10