תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
ניסיתי לחבר את צג ה- LED MAX7219 שלי לשרת MQTT ולקבל טקסט מהמנוי ל- MQTT לתצוגה.
אבל לא קיבלתי קוד מתאים באינטרנט, אז התחלתי לבנות משלי …
והתוצאה מגיעה די טוב…
- אתה יכול להציג כל טקסט בתצוגת LED
- אתה יכול להתאים את עוצמת התצוגה
- אתה יכול להגדיר את מהירות הגלילה
אספקה
- לוח פיתוח esp8266. (במקרה שלי זה NODE MCU v1.0)
- תצוגת מטריקס LED MAX7219.
נדרשת תוכנה:
- Arduino IDE.
- שרת MQTT. (המקרה שלי מוסקיטו)
חובה לספרייה:
- ESP8266WiFi.h
- MD_MAX72xx.h
- EspMQTTClient.h
שלב 1: הגדר את Arduino IDE לפיתוח Esp8266
פתח את ההעדפות של Arduino ולאחר מכן הדבק את כתובת האתר שלהלן בכתובות אתרים של מנהל לוחות נוספים:
arduino.esp8266.com/stable/package_esp8266com_index.json
לאחר מכן כלים> לוחות> מנהל לוחות וחפש esp8266 והתקן אותו.
עכשיו ה- Arduino ide שלך מוכן לפיתוח esp8266.
שלב 2: הורד ספריות חיצוניות
עכשיו אנחנו צריכים כמה ספריות עבור MAX7219 ו- MQTT Client.
בואו להוריד ולהקים את הספריות
נווט אל סקיצה> כלול ספרייה> נהל ספריות ב- Arduino IDE
וחפש EspMQTTClient ולחץ על התקן
הערה: התקן את כל הספריות התלויות, זה חשוב
חפש שוב את MD_MAX72xx ולחץ על התקן
שלב 3: כתוב קוד כלשהו כעת
עכשיו הדבק את הקוד למטה
#לִכלוֹל
#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // מספר המכשיר שלך #הגדר CLK_PIN D5 // או SCK #define DATA_PIN D7 // או MOSI #define CS_PIN D4 // או SS // תוכל להגדיר אותו לכל סיכה #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // שינוי בהתאם לסוג התצוגה שלך 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; // ברירת מחדל עיכוב גלילה uint8_t INTENSITY = 5; // ברירת המחדל של char curessess [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 statum {S_IDLE, S_NEXT_CHAR, S_SHOW_ char *p סטטי; סטטי uint16_t curLen, showLen; סטטי uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } state = S_NEXT_CHAR; לשבור; מקרה S_NEXT_CHAR: אם (*p == '\ 0') מצב = S_IDLE; אחרת {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; state = S_SHOW_CHAR; } לשבור; מקרה S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // גלול לאורך - החיוג החוזר יטען את כל הנתונים prevTime = millis (); // נקודת התחלה לפעם הבאה}} הגדרת חלל () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITY, INTENSITY); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "תצוגה חכמה"); } void onConnectionEstablished () {// נושא המנוי ל- MQTT עבור client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});
// נושא מנוי MQTT לבקרת עוצמת התצוגה
client.subscribe ("leddisplay/עוצמה", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // נושא מנוי MQTT עבור בקרת מהירות גלילת תצוגה client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } לולאת חלל () {client.loop (); scrollText (); }
למידע מפורט, עיין במאגר זה
github.com/souravj96/max7219-mqtt-esp8266
שלב 4: תרשים מעגלים
חבר תצוגת MAX7219 עם NODE MCU
שלב 5: העלה קוד ל- Esp8266
עכשיו בחר את סוג הלוח הנכון והיציאה הטורית שלך ואז לחץ על העלה.
שלב 6: בדוק הכל
אם הכל תקין אז ה- esp8266 שלך יתחבר לשרת MQTT שלך.
עכשיו, אם יפורסם משהו בנושא LEDdisplay/טקסט שיוצג.
{
topic: "leddisplay/text", מטען: "ההודעה שלך כאן"}
אם ברצונך להגדיר את עוצמת התצוגה
{
נושא: "תצוגת LED/עוצמה", מטען: "2" // מקסימום הוא 15 ודקה 0}
אם ברצונך להגדיר את מהירות הגלילה של התצוגה
{
נושא: "leddisplay/scroll", מטען: "100" // מקסימום הוא 255 ודקה 0}
קידוד שמח