Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Bandžiau prijungti savo MAX7219 LED ekraną prie MQTT serverio ir gauti tekstą iš MQTT prenumeratos.
bet internete negavau jokio tinkamo kodo, todėl pradėjau kurti savo …
o rezultatas visai geras …
- LED ekrane galite rodyti bet kokį tekstą
- galite reguliuoti ekrano intensyvumą
- galite nustatyti slinkties greitį
Prekės
- Esp8266 kūrimo lenta. (mano atveju tai NODE MCU v1.0)
- MAX7219 LED matricinis ekranas.
Reikalinga programinė įranga:
- „Arduino IDE“.
- MQTT serveris. (mano atvejis Mosquitto)
Reikalinga biblioteka:
- ESP8266WiFi.h
- MD_MAX72xx.h
- EspMQTTClient.h
1 veiksmas: nustatykite „Arduino IDE“, skirtą „Esp8266 Development“
atidarykite „Arduino“nuostatas, tada įklijuokite žemiau esantį URL į papildomų lentų tvarkyklės URL:
arduino.esp8266.com/stable/package_esp8266com_index.json
tada Įrankiai> Lentos> Lentų tvarkytuvė ir suraskite esp8266 ir įdiekite.
dabar jūsų „Arduino ide“yra paruoštas plėtoti esp8266.
2 veiksmas: atsisiųskite išorines bibliotekas
dabar mums reikia kai kurių MAX7219 ir MQTT kliento bibliotekų.
atsisiųskime ir nustatysime bibliotekas
eikite į „Arduino IDE“eskizas> Įtraukti biblioteką> Tvarkyti bibliotekas
ir ieškokite EspMQTTClient ir spustelėkite Įdiegti
NB: Įdiekite visas priklausomas bibliotekas, tai svarbu
Dar kartą ieškokite MD_MAX72xx ir spustelėkite Įdiegti
3 žingsnis: dabar parašykite kodą
Dabar įklijuokite žemiau esantį kodą
#įtraukti
#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // jūsų įrenginių skaičius #define CLK_PIN D5 // arba SCK #define DATA_PIN D7 // arba MOSI #define CS_PIN D4 // arba SS // galite tai nustatyti į bet kokį kaištį #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // pakeisti pagal jūsų ekrano tipą MD_MAX72XX mx = MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); const uint8_t MESG_SIZE = 255; const uint8_t CHAR_SPACING = 1; uint8_t SCROLL_DELAY = 75; // numatytasis slinkties uždelsimas uint8_t INTENSITY = 5; // numatytasis intensyvumas char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = false; void scrollDataSink (uint8_t dev, MD_MAX72XX:: transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX:: transformType_t t) {static enum {S_IDLE, S_NEXSCHCH_SCH, S statinė anglis *p; statinis uint16_t curLen, showLen; statinis uint8_t cBuf [8]; uint8_t colData = 0; jungiklis (būsena) {atvejis S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = klaidinga; } būsena = S_NEXT_CHAR; pertrauka; atvejis S_NEXT_CHAR: jei (*p == '\ 0') būsena = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; būsena = S_SHOW_CHAR; } pertrauka; atvejis S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // slinkite išilgai - atgalinis skambutis įkelia visus duomenis prevTime = millis (); // kito karto pradžios taškas}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITY, INTENSITY); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; „sprintf“(„curMessage“, „Išmanusis ekranas“); } void onConnectionEstablished () {// MQTT prenumeratos tema vaizdiniam tekstui client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});
// MQTT prenumeratos tema ekrano intensyvumui valdyti
client.subscribe ("leddisplay/intensyvumas", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT prenumeratos tema ekrano slinkties greičio valdymo klientui.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }
Išsamesnės informacijos ieškokite šioje saugykloje
github.com/souravj96/max7219-mqtt-esp8266
4 žingsnis: grandinės schema
prijunkite MAX7219 ekraną su NODE MCU
5 veiksmas: įkelkite kodą į Esp8266
Dabar pasirinkite tinkamą plokštės tipą ir nuoseklųjį prievadą, tada paspauskite „Įkelti“.
6 žingsnis: išbandykite viską
jei viskas vyksta teisingai, jūsų esp8266 bus prijungtas prie jūsų MQTT serverio.
dabar, jei kas nors bus paskelbta LED rodymo/teksto tema, kuri bus rodoma.
{
tema: "leddisplay/text", payload: "tavo žinutė čia"}
jei norite nustatyti ekrano intensyvumą
{
tema: "leddisplay/intensyvumas", naudingoji apkrova: "2" // maks. yra 15 ir min 0}
jei norite nustatyti ekrano slinkties greitį
{
tema: "leddisplay/scroll", naudingoji apkrova: "100" // maks. yra 255 ir min 0}
Laimingas kodavimas