Mündəricat:

MAX7219 LED Matrix MQTT Esp8266 istifadə edərək: 6 addım
MAX7219 LED Matrix MQTT Esp8266 istifadə edərək: 6 addım

Video: MAX7219 LED Matrix MQTT Esp8266 istifadə edərək: 6 addım

Video: MAX7219 LED Matrix MQTT Esp8266 istifadə edərək: 6 addım
Video: #61 Max7219 LED Matrix Digital Clock & Scrolling Display in Tasmota & Home Assistant 2024, Noyabr
Anonim
Esp8266 istifadə edərək MAX7219 LED Matrix MQTT
Esp8266 istifadə edərək MAX7219 LED Matrix MQTT

MAX7219 LED displeyimi bir MQTT serverinə bağlamağa və göstərmək üçün MQTT abunəliyindən bir mətn almağa çalışırdım.

amma internetdə uyğun bir kod almadım, buna görə öz kodumu yaratmağa başladım …

və nəticə çox yaxşı gəlir …

  • led ekranda istənilən mətni göstərə bilərsiniz
  • Ekranın intensivliyini tənzimləyə bilərsiniz
  • sürüşmə sürətini təyin edə bilərsiniz

Təchizat

  1. Bir esp8266 inkişaf lövhəsi. (mənim vəziyyətim NODE MCU v1.0)
  2. MAX7219 LED Matrix Ekranı.

Lazım olan proqram təminatı:

  1. Arduino IDE.
  2. Bir MQTT serveri. (mənim vəziyyətim ağcaqanad)

Kitabxana tələb olunur:

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

Addım 1: Esp8266 İnkişafı üçün Arduino IDE qurun

Esp8266 İnkişaf üçün Arduino IDE qurun
Esp8266 İnkişaf üçün Arduino IDE qurun

Arduinonun üstünlüklərini açın, sonra aşağıdakı URL -ni əlavə lövhələr meneceri URL -lərinə yapışdırın:

arduino.esp8266.com/stable/package_esp8266com_index.json

sonra Alətlər> Lövhələr> Kartlar Meneceri və esp8266 -ı axtarın və quraşdırın.

indi Arduino ideyanız esp8266 inkişafına hazırdır.

Addım 2: Xarici Kitabxanaları Yükləyin

indi MAX7219 və MQTT Müştəri üçün bəzi kitabxanalara ehtiyacımız var.

kitabxanaları yükləyib quraq

Sketch> Kitabxanaya daxil et> Arduino IDE -də Kitabxanaları İdarə et -ə gedin

və EspMQTTClient axtarın və Quraşdır düyməsini basın

Qeyd: Bütün asılı kitabxanaları quraşdırın, vacibdir

Yenə MD_MAX72xx axtarın və Quraşdır düyməsini basın

Addım 3: İndi Kod yazın

İndi aşağıdakı kodu yapışdırın

#daxil edin

#include #include #include "EspMQTTClient.h" #MAX_DEVICES 4 təyin edin // cihaz sayınız #define CLK_PIN D5 // və ya SCK #define DATA_PIN D7 // və ya MOSI #define CS_PIN D4 // və ya SS // təyin edə bilərsiniz hər hansı bir pin üçün #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // ekran növünüzə görə dəyişin 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; // standart sürüşmə gecikməsi uint8_t INTENSITY = 5; // default intensivliyi char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = yalan; 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_NEX_CHOW_, S_NEXT_CHAR_, S_NEX_CHOW_ statik xarakter *p; statik uint16_t curLen, showLen; statik uint8_t cBuf [8]; uint8_t colData = 0; keçid (vəziyyət) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = yalan; } dövlət = S_NEXT_CHAR; fasilə; halda S_NEXT_CHAR: əgər (*p == '\ 0') vəziyyət = S_IDLE; başqa {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; vəziyyət = S_SHOW_CHAR; } fasilə; hal S_SHOW_CHAR: colData = cBuf [curLen ++]; əgər (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // birlikdə gedin - geri çağırma bütün məlumatları yükləyəcək prevTime = millis (); // növbəti dəfə başlanğıc nöqtəsi}} 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, "Ağıllı Ekran"); } void onConnectionEstablished () {// Display text text for client.subscribe üçün MQTT abunə mövzusu ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Ekran intensivliyinə nəzarət üçün MQTT abunə mövzusu

client.subscribe ("leddisplay/intensivliyi", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Display scroll speed controll client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}) üçün MQTT abunə mövzusu; } void loop () {client.loop (); scrollText (); }

Ətraflı məlumat üçün bu depoya baxın

github.com/souravj96/max7219-mqtt-esp8266

Addım 4: Dövrə Şeması

Dövrə diaqramı
Dövrə diaqramı

MAX7219 displeyini NODE MCU ilə birləşdirin

Addım 5: Kodu Esp8266 -ya yükləyin

Kodu Esp8266 -a yükləyin
Kodu Esp8266 -a yükləyin

İndi düzgün lövhə növünü və serial portunu seçin, sonra yüklə vurun.

Addım 6: Hər şeyi sınayın

hər şey qaydasındadırsa, esp8266 sizin MQTT serverinizə qoşulacaq.

indi, bir şey göstəriləcək leddisplay/mətn mövzusunda nəşr olunacaqsa.

{

mövzu: "leddisplay/text", faydalı yük: "mesajınız buradadır"}

ekranın intensivliyini təyin etmək istəyirsinizsə

{

mövzu: "leddisplay/intensivliyi", yük: "2" // max 15 və min 0}

ekranın sürüşmə sürətini təyin etmək istəyirsinizsə

{

mövzu: "leddisplay/scroll", yük: "100" // maksimum 255 və min 0}

Xoşbəxt kodlaşdırma

Tövsiyə: