ESP 8266 делает шумовые сигналы на светодиодную матрицу

esp8266 led led-matrix

Я строю проект светодиодной матрицы 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);
}

, 👍0

Обсуждение

почему вы включаете только небольшую часть доступной информации?, @jsotola

Разместите схему не такой уж вьющейся штуки, это бы помогло., @Gil