Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Po përpiqesha të lidhja ekranin tim MAX7219 LED me një server MQTT dhe të merrja një tekst nga pajtimi MQTT për tu shfaqur.
por unë nuk mora asnjë kod të përshtatshëm në internet, kështu që fillova të ndërtoj timen…
dhe rezultati vjen mjaft mirë …
- mund të shfaqni çdo tekst në ekranin led
- mund të rregulloni intensitetin e ekranit
- mund të vendosni shpejtësinë e rrotullimit
Furnizimet
- Një bord zhvillimi esp8266. (rasti im është NODE MCU v1.0)
- MAX7219 Ekran i Matricës LED.
Softueri i nevojshëm:
- Arduino IDE.
- Një server MQTT. (rasti im Mushkonja)
Kërkohet biblioteka:
- ESP8266WiFi.h
- MD_MAX72xx.h
- EspMQTTClient.h
Hapi 1: Konfiguroni Arduino IDE për zhvillimin Esp8266
hapni preferencat e Arduino pastaj ngjitni URL -në e mëposhtme në URL -të e Menaxherit të Bordeve Shtesë:
arduino.esp8266.com/stable/package_esp8266com_index.json
pastaj Tools> Boards> Boards Manager dhe kërkoni për esp8266 dhe instalojeni.
tani ideja juaj Arduino është gati për zhvillimin esp8266.
Hapi 2: Shkarkoni Bibliotekat e Jashtme
tani na duhen disa biblioteka për MAX7219 dhe MQTT Client.
le të shkarkojmë dhe krijojmë bibliotekat
lundroni te Sketch> Përfshini Bibliotekën> Menaxhoni Bibliotekat në Arduino IDE
dhe kërkoni për EspMQTTClient dhe klikoni Instalo
NB: Instaloni të gjitha bibliotekat e varura, është e rëndësishme
Kërkoni përsëri për MD_MAX72xx dhe klikoni Instalo
Hapi 3: Shkruani Disa Kod Tani
Tani ngjitni kodin e mëposhtëm
#përfshi
#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // numërimi i pajisjes tuaj #përcaktoni CLK_PIN D5 // ose SCK #define DATA_PIN D7 // ose MOSI #define CS_PIN D4 // ose SS // mund ta vendosni për çdo pin #përcaktoni HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // ndryshoni sipas llojit të ekranit tuaj 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; // vonesa e parazgjedhur e lëvizjes uint8_t INTENSITET = 5; // intensiteti i parazgjedhur i kurorës së mesazhit [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) {enum statik {S_IDLE, S_NEXT_CHOW, S_NEXT_CHAR,; karik statik *p; statike uint16_t curLen, showLen; statike uint8_t cBuf [8]; uint8_t colData = 0; switch (gjendja) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } gjendja = S_NEXT_CHAR; pushim; rasti S_NEXT_CHAR: nëse (*p == '\ 0') gjendja = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; gjendja = S_SHOW_CHAR; } pushim; rasti S_SHOW_CHAR: colData = cBuf [curLen ++]; nëse (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // lundroni - thirrja do të ngarkojë të gjitha të dhënat paraprake = millis (); // pika fillestare për herën tjetër}} void setup () {Serial.begin (115200); mx.filloj (); mx.control (MD_MAX72XX:: Intensiteti, Intensiteti); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Smart Display"); } void onConnectionEstablished () {// Tema e abonimit MQTT për klientin e tekstit të shfaqur. abonohu ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});
// Tema e pajtimit MQTT për kontrollin e intensitetit të ekranit
client.subscribe ("leddisplay/intensiteti", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITETI, payload.toInt ());}); // Tema e abonimit MQTT për klientin e kontrollit të shpejtësisë së lëvizjes së ekranit. Abonohu ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }
Për informacion të detajuar, referojuni këtij depoja
github.com/souravj96/max7219-mqtt-esp8266
Hapi 4: Diagrami i Qarkut
lidhni ekranin MAX7219 me NODE MCU
Hapi 5: Ngarko kodin në Esp8266
tani zgjidhni llojin tuaj të saktë të bordit dhe portin serik, pastaj shtypni ngarkimin.
Hapi 6: Provoni gjithçka
nëse gjithçka shkon si duhet atëherë esp8266 juaj do të lidhet me serverin tuaj MQTT.
tani, nëse ndonjë gjë do të publikohet në temën leddisplay/tekst që do të shfaqet.
{
tema: "leddisplay/text", ngarkesa: "mesazhi juaj këtu"}
nëse doni të vendosni intensitetin e shfaqjes
{
tema: "leddisplay/intensiteti", ngarkesa: "2" // max është 15 dhe min 0}
nëse doni të vendosni shpejtësinë e lëvizjes së ekranit
{
tema: "leddisplay/scroll", ngarkesa: "100" // max është 255 dhe min 0}
Kodim i lumtur