Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Poskušal sem povezati svoj LED zaslon MAX7219 s strežnikom MQTT in prejeti besedilo iz naročnine na MQTT za prikaz.
vendar na internetu nisem dobil ustrezne kode, zato sem začel graditi svojo …
in rezultat je zelo dober …
- na LED zaslonu lahko prikažete poljubno besedilo
- lahko prilagodite intenzivnost prikaza
- lahko nastavite hitrost drsenja
Zaloge
- Razvojna plošča esp8266. (v mojem primeru je to NODE MCU v1.0)
- MAX7219 LED matrični zaslon.
Potrebna programska oprema:
- Arduino IDE.
- Strežnik MQTT. (moj primer Mosquitto)
Potrebna knjižnica:
- ESP8266WiFi.h
- MD_MAX72xx.h
- EspMQTTClient.h
1. korak: Namestite Arduino IDE za razvoj Esp8266
odprite nastavitve Arduina in nato prilepite spodnji URL v URL -je upravitelja dodatnih plošč:
arduino.esp8266.com/stable/package_esp8266com_index.json
nato Orodja> Plošče> Upravitelj plošč in poiščite esp8266 ter ga namestite.
zdaj je vaš Arduino ide pripravljen za razvoj esp8266.
2. korak: Prenesite zunanje knjižnice
zdaj potrebujemo nekaj knjižnic za odjemalca MAX7219 in MQTT.
naložimo in nastavimo knjižnice
pojdite na Sketch> Include Library> Manage Libraries v Arduino IDE
in poiščite EspMQTTClient in kliknite Namesti
Opomba: Namestite vse odvisne knjižnice, pomembno je
Ponovno poiščite MD_MAX72xx in kliknite Namesti
3. korak: Napišite kodo zdaj
Zdaj prilepite spodnjo kodo
#vključi
#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // število vaših naprav #define CLK_PIN D5 // ali SCK #define DATA_PIN D7 // ali MOSI #define CS_PIN D4 // ali SS // lahko nastavite na kateri koli pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // spremenite glede na vrsto prikaza 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; // privzeta zakasnitev drsenja uint8_t INTENSITY = 5; // privzeta intenzivnost 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) {statično naštevanje {S_IDLE statični char *p; static uint16_t curLen, showLen; statični uint8_t cBuf [8]; uint8_t colData = 0; switch (stanje) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } stanje = S_NEXT_CHAR; zlom; primer S_NEXT_CHAR: if (*p == '\ 0') stanje = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; stanje = S_SHOW_CHAR; } prelom; primer S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // pomikanje po - povratni klic bo naložil vse podatke prevTime = millis (); // izhodišče za naslednjič}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENZITET, INTENZITET); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Pametni zaslon"); } void onConnectionEstablished () {// Tema naročnine na MQTT za odjemalca prikaznega besedila.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});
// Naročninska tema MQTT za nadzor intenzivnosti prikaza
client.subscribe ("leddisplay/intenzivnost", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Tema naročnine na MQTT za odjemalca za nadzor hitrosti drsenja zaslona.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }
Podrobne informacije najdete v tem skladišču
github.com/souravj96/max7219-mqtt-esp8266
4. korak: Shema vezja
povežite zaslon MAX7219 z NODE MCU
5. korak: Naložite kodo na Esp8266
zdaj izberite pravo vrsto plošče in serijska vrata, nato pritisnite nalaganje.
6. korak: Preizkusite vse
če bo vse v redu, bo vaš esp8266 povezan s strežnikom MQTT.
zdaj, če bo kaj objavljeno o temi leddisplay/text, ki bo prikazana.
{
topic: "leddisplay/text", koristna obremenitev: "your message here"}
če želite nastaviti intenzivnost prikaza
{
tema: "leddisplay/intenzivnost", koristna obremenitev: "2" // max je 15 in min 0}
če želite nastaviti hitrost drsenja zaslona
{
topic: "leddisplay/scroll", koristna obremenitev: "100" // max je 255 in min 0}
Veselo kodiranje