Я пытаюсь отобразить текст, полученный с веб-сервера, на матричном дисплее FC16_HW, используя файл esp32. Для упрощения я создал небольшую демонстрацию, которая выглядит так:
#include <WiFi.h>
#include <HTTPClient.h>
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 5
MD_Parola Display = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
#define BUF_SIZE 75
char one[BUF_SIZE] = {"hi"};
void setup() {
Serial.begin(115200);
Display.begin();
Display.setIntensity(15);
Display.displayClear();
Display.displayScroll(one, PA_CENTER, PA_SCROLL_LEFT, 100);
}
void loop()
{
if (Display.displayAnimate()){
char one[BUF_SIZE] = {"hello"};
Display.displayReset();
}
}
Но по какой-то причине текст никогда не меняется на «привет», несмотря на то, что он устанавливает для него символ «один».
Я пробовал разные решения для прокрутки текста, у всех была одна и та же проблема. if (Display.displayAnimate())
определенно работает, так как я проверяю это с помощью Serial.println
.
Есть идеи?
Ваш код в loop()
:
void loop()
{
if (Display.displayAnimate()){
char one[BUF_SIZE] = {"hello"};
Display.displayReset();
}
}
Просто установка переменной с именем «one» в строку не будет отображать строку. Вы должны вызвать Display.displayScroll()
с новым значением:
void loop()
{
if (Display.displayAnimate()){
char one[BUF_SIZE] = {"hello"};
Display.displayScroll(one, PA_CENTER, PA_SCROLL_LEFT, 100);
Display.displayReset();
}
}
Я бы посоветовал не использовать одно и то же имя переменной, так как это сбивает с толку и скроет исходную переменную. На самом деле здесь вообще нет необходимости использовать переменную, если только вы не планируете изменять строку перед ее отображением. Итак, вы можете просто написать:
Display.displayScroll("hello", PA_CENTER, PA_SCROLL_LEFT, 100);
Спасибо за ответ! Я хочу изменить переменную перед прокруткой, как я уже упоминал. Сейчас попробую, отпишусь, если получится!