Мазмуну:

MAX7219 LED Matrix MQTT Esp8266 колдонуу: 6 кадам
MAX7219 LED Matrix MQTT Esp8266 колдонуу: 6 кадам

Video: MAX7219 LED Matrix MQTT Esp8266 колдонуу: 6 кадам

Video: MAX7219 LED Matrix MQTT Esp8266 колдонуу: 6 кадам
Video: Using HT16K33 4 digit seven segment display with ESP8266 NodeMCU and D1 Mini 2024, Ноябрь
Anonim
MAX7219 LED Matrix MQTT Esp8266 колдонуу
MAX7219 LED Matrix MQTT Esp8266 колдонуу

Мен MAX7219 LED дисплейимди MQTT серверине туташтырууга жана MQTT жазылуусунан дисплейди көрүүгө аракет кылып жаттым.

бирок мен интернеттен эч кандай ылайыктуу кодду алган жокмун, ошондуктан мен өзүмдүн кодумду кура баштадым …

жана натыйжасы абдан жакшы келет …

  • сиз каалаган дисплейди дисплейде көрсөтө аласыз
  • дисплейдин интенсивдүүлүгүн жөндөй аласыз
  • жылдыруу ылдамдыгын орното аласыз

Жабдуулар

  1. Esp8266 өнүктүрүү тактасы. (Менин учурда бул NODE MCU v1.0)
  2. MAX7219 LED Matrix Display.

Программалык камсыздоо керек:

  1. Arduino IDE.
  2. MQTT сервери. (менин ишим Mosquitto)

Китепкана талап кылынат:

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

1 -кадам: Esp8266 өнүктүрүү үчүн Arduino IDE орнотуу

Esp8266 өнүктүрүү үчүн Arduino IDE орнотуу
Esp8266 өнүктүрүү үчүн Arduino IDE орнотуу

Arduino артыкчылыктарын ачыңыз, андан кийин төмөнкү URLди кошумча такталар менеджеринин URL дарегине чаптаңыз:

arduino.esp8266.com/stable/package_esp8266com_index.json

анда Куралдар> Такта> Такта менеджери жана esp8266 издеп, аны орнотуңуз.

азыр сиздин Arduino ide esp8266 иштеп чыгууга даяр.

2 -кадам: Тышкы китепканаларды жүктөп алыңыз

азыр бизге MAX7219 жана MQTT Client үчүн кээ бир китепканалар керек.

китепканаларды жүктөп алалы жана орнотолу

өтүңүз Sketch> Китепкананы кошуу> Arduino IDEдеги китепканаларды башкаруу

жана EspMQTTClient издеп, Орнотууну чыкылдатыңыз

Эскертүү: Бардык көз каранды китепканаларды орнотуңуз, бул маанилүү

Дагы MD_MAX72xx издеп, Орнотууну чыкылдатыңыз

3 -кадам: Азыр код жазыңыз

Эми төмөнкү кодду чаптаңыз

#кошуу

#include #include #include "EspMQTTClient.h" #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 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_NEX_CHOW_, S_NEX_CHOW_, S_NEX_CHOW_ статикалык чар *п; static 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 = жалган; } абал = S_NEXT_CHAR; тыныгуу; case S_NEXT_CHAR: if (*p == '\ 0') state = S_IDLE; башка {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; абал = S_SHOW_CHAR; } тыныгуу; учурда S_SHOW_CHAR: colData = cBuf [curLen ++]; эгер (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // жылдырыңыз - кайра чалуу бардык маалыматтарды жүктөйт prevTime = millis (); // кийинки жолу башталуу чекити}} 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, "Smart Display"); } void onConnectionEstablished () {// MQTT жазылуу темасы дисплей клиенти.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT жазылуу темасы дисплейдин интенсивдүүлүгүн көзөмөлдөө үчүн

client.subscribe ("leddisplay/intensity", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT жазылуу темасы дисплейдин ылдамдыгын контролдоо client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Толук маалымат алуу үчүн бул репозиторийге кайрылыңыз

github.com/souravj96/max7219-mqtt-esp8266

4 -кадам: Райондук диаграмма

Райондук диаграмма
Райондук диаграмма

MAX7219 дисплейин NODE MCU менен туташтырыңыз

5 -кадам: Кодду Esp8266ге жүктөө

Кодду Esp8266га жүктөө
Кодду Esp8266га жүктөө

азыр өзүңүздүн тактаңыздын түрүн жана сериялык портун тандап, анан жүктөп коюңуз.

6 -кадам: Бардыгын сыноо

эгер баары туура болсо, анда esp8266 сиздин MQTT сервериңизге туташат.

азыр, эгерде бир нерсе көрсөтүлө турган leddisplay/text темасында жарыяланса.

{

тема: "leddisplay/text", пайдалуу жүк: "сиздин билдирүүңүз бул жерде"}

эгерде дисплейдин интенсивдүүлүгүн орноткуңуз келсе

{

тема: "leddisplay/intensity", пайдалуу жүк: "2" // максимум 15 жана мин 0}

эгер сиз дисплейдин ылдамдыгын орноткуңуз келсе

{

тема: "leddisplay/scroll", пайдалуу жүк: "100" // максимум 255 жана мин 0}

Бактылуу коддоо

Сунушталууда: