INHOUDSOPGAWE:

MAX7219 LED Matrix MQTT Gebruik Esp8266: 6 stappe
MAX7219 LED Matrix MQTT Gebruik Esp8266: 6 stappe

Video: MAX7219 LED Matrix MQTT Gebruik Esp8266: 6 stappe

Video: MAX7219 LED Matrix MQTT Gebruik Esp8266: 6 stappe
Video: Controlling Max7219 8x8 Led matrix by Phone with Nodemcu WiFi 2024, November
Anonim
MAX7219 LED Matrix MQTT met behulp van Esp8266
MAX7219 LED Matrix MQTT met behulp van Esp8266

Ek het probeer om my MAX7219 LED -skerm aan te sluit op 'n MQTT -bediener en 'n teks van die MQTT -intekening te ontvang om te vertoon.

maar ek het nie 'n geskikte kode op die internet gekry nie, so ek het my eie begin bou …

en die resultaat kom baie goed …

  • u kan enige teks op LED -skerm vertoon
  • u kan die intensiteit van die skerm aanpas
  • u kan die blaassnelheid instel

Voorrade

  1. 'N Ontwikkelingsbord van esp8266. (my saak is NODE MCU v1.0)
  2. MAX7219 LED Matrix Display.

Sagteware benodig:

  1. Arduino IDE.
  2. 'N MQTT -bediener. (my geval Mosquitto)

Biblioteek benodig:

  1. ESP8266WiFi.h
  2. MD_MAX72xx.h
  3. EspMQTTClient.h

Stap 1: Stel Arduino IDE op vir Esp8266 -ontwikkeling

Stel Arduino IDE op vir Esp8266 -ontwikkeling
Stel Arduino IDE op vir Esp8266 -ontwikkeling

maak die voorkeure van Arduino oop en plak dan die onderstaande URL in die URL's van die Aditional Boards Manager:

arduino.esp8266.com/stable/package_esp8266com_index.json

dan Tools> Boards> Boards Manager en soek esp8266 en installeer dit.

nou is u Arduino -idee gereed vir esp8266 -ontwikkeling.

Stap 2: Laai eksterne biblioteke af

nou benodig ons 'n paar biblioteke vir MAX7219 en MQTT Client.

laat ons die biblioteke aflaai en opstel

navigeer na Skets> Sluit biblioteek in> Bestuur biblioteke op Arduino IDE

en soek na EspMQTTClient en klik op Installeer

NB: installeer alle afhanklike biblioteke, dit is belangrik

Soek weer na MD_MAX72xx en klik op Installeer

Stap 3: Skryf nou 'n paar kode

Plak nou die onderstaande kode

#insluit

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // your device count #define CLK_PIN D5 // or SCK #define DATA_PIN D7 // or MOSI #define CS_PIN D4 // or SS // you can set it na enige pen #definieer HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // verander volgens u tipe skerm 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; // standaardrolvertraging uint8_t INTENSITEIT = 5; // standaard intensiteit 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_NEXT_CHAR, S_SHOW_; statiese char *p; statiese uint16_t curLen, showLen; statiese uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } staat = S_NEXT_CHAR; breek; saak S_NEXT_CHAR: as (*p == '\ 0') toestand = S_IDLE; anders {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; staat = S_SHOW_CHAR; } breek; geval S_SHOW_CHAR: colData = cBuf [curLen ++]; as (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // blaai saam - die terugbel laai al die data prevTime = millis (); // beginpunt vir die volgende keer}} leemte -opstelling () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITEIT, INTENSITEIT); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Smart Display"); } void onConnectionEstablished () {// MQTT -intekeningonderwerp vir vertoningstekst client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT -intekeningonderwerp vir die beheer van die vertoningintensiteit

client.subscribe ("leddisplay/intensiteit", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT -intekeningonderwerp vir vertoonrolspoedbeheer client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } leemte -lus () {client.loop (); scrollText (); }

Raadpleeg hierdie bewaarplek vir meer inligting

github.com/souravj96/max7219-mqtt-esp8266

Stap 4: Kringdiagram

Stroombaandiagram
Stroombaandiagram

verbind MAX7219 -skerm met NODE MCU

Stap 5: Laai kode op na Esp8266

Laai kode op na Esp8266
Laai kode op na Esp8266

kies nou u korrekte bordtipe en seriële poort en druk dan oplaai.

Stap 6: Toets alles

as alles reg is, word u esp8266 aan u MQTT -bediener gekoppel.

nou, as daar iets gepubliseer sal word oor leddisplay/teksonderwerp wat vertoon sal word.

{

onderwerp: "leddisplay/text", laai: "u boodskap hier"}

as u die intensiteit van die vertoning wil instel

{

onderwerp: "leddisplay/intensiteit", loonvrag: "2" // maksimum is 15 en min 0}

as u die bladsnelheid van die vertoning wil stel

{

onderwerp: "leddisplay/scroll", loonvrag: "100" // maksimum is 255 en min 0}

Gelukkige kodering

Aanbeveel: