Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
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
- Bir esp8266 inkişaf lövhəsi. (mənim vəziyyətim NODE MCU v1.0)
- MAX7219 LED Matrix Ekranı.
Lazım olan proqram təminatı:
- Arduino IDE.
- Bir MQTT serveri. (mənim vəziyyətim ağcaqanad)
Kitabxana tələb olunur:
- ESP8266WiFi.h
- MD_MAX72xx.h
- EspMQTTClient.h
Addım 1: 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ı
MAX7219 displeyini NODE MCU ilə birləşdirin
Addım 5: Kodu Esp8266 -ya 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