ESP 8266 делает шумовые сигналы на светодиодную матрицу
Я строю проект светодиодной матрицы ESP8266, но мой ESP иногда создает какой-то шум, который делает случайные пиксели на матричном свете во всех разных цветах. Похоже, это случайность. Кто-нибудь знает, почему это и как это решить?
Мой код:
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecureBearSSL.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif
#define PIN 12
StaticJsonDocument<2500> response;
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(16, 16, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
String str;
void setup(){
matrix.begin();
matrix.setBrightness(1);
Serial.begin(9600);
Serial.setTimeout(30000);
Serial.println(F("Connecting to WIFI!"));
WiFi.mode(WIFI_STA);
WiFi.begin("", "");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(F("\n\rWiFi connected!"));
delay(2000);
}
String getData() {
std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
client->setInsecure();
HTTPClient https;
if (https.begin(*client, "https://api.krystofprasil.cz/")) { // HTTPS
Serial.println("[HTTPS] GET...");
int httpCode = https.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTPS] GET... code: %d\n", httpCode);
// file found at server?
if (httpCode == HTTP_CODE_OK) {
yield();
String payload = https.getString();
Serial.println(payload);
return payload;
}
} else {
Serial.printf("[HTTPS] GET... failed, error: %s\n\r", https.errorToString(httpCode).c_str());
}
https.end();
} else {
Serial.printf("[HTTPS] Unable to connect\n\r");
}
}
void loop()
{
const auto deser_err = deserializeJson(response, getData());
if (deser_err) {
Serial.print(F("Failed to deserialize, reason: \""));
Serial.print(deser_err.c_str());
Serial.println('"');
} else {
Serial.print(F("Recevied valid json document with "));
Serial.print(response.size());
Serial.println(F(" elements."));
yield();
Serial.println(F("Pretty printed back at you:"));
serializeJsonPretty(response, Serial);
yield();
Serial.println();
}
matrix.fillScreen(0);
for (JsonObject elem : response.as<JsonArray>()) {
yield();
int x = elem["x"]; // 2, 2, 2
int y = elem["y"]; // 2, 2, 2
JsonArray rgb = elem["rgb"];
int rgb_0 = rgb[0]; // 255, 255, 255
int rgb_1 = rgb[1]; // 255, 255, 255
int rgb_2 = rgb[2]; // 255, 255, 255
matrix.drawPixel(x, y, matrix.Color(rgb_0, rgb_1, rgb_2));
yield();
Serial.println(y);
}
matrix.show();
delay(10000);
}
@krystof18, 👍0
Обсуждение0
Смотрите также:
- WS2812 — сначала белые, а затем ближе к концу становятся красными/желтыми/оранжевыми.
- Скетч мигания ESP8266 не мигает светодиодом
- Разбор HTML-запроса GET с параметрами с помощью WiFiEsp
- Управление светодиодной лентой с помощью ИК-контроллера с помощью Arduino
- Необходимы ли резисторы для светодиодной матрицы 8х8?
- Как проверить, горит ли светодиод?
- ESP8266, похоже, убивает цикл while
- Почему официальный учебник по сканированию светодиодной матрицы записывает вывод столбца дважды?
почему вы включаете только небольшую часть доступной информации?, @jsotola
Разместите схему не такой уж вьющейся штуки, это бы помогло., @Gil