Причина сброса WDT 4 после переустановки Arduino - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь управлять своей светодиодной лентой с помощью приложения для Android.
Я переустанавливал Arduino IDE, поскольку мне не нравилась версия Windows-store.Серийный монитор сломался по какой-то причине, поэтому я переключился обратно на версию магазина Windows.

Но теперь я получаю ошибку сброса WDT, которую я не могу устранить.

Я также использую Adafruit_NeoPixel, и везде, где я помещаю «ledstrip.begin» или «ledstrip.show», кажется, что он ломается.

#include <ESP8266WiFi.h>
#include <Adafruit_NeoPixel.h>

byte RED = 14;
byte GREEN = 12;
byte BLUE = 13;
byte PIN_COUNT = 20;
Adafruit_NeoPixel ledstrip = Adafruit_NeoPixel(PIN_COUNT, 6, NEO_RGB + NEO_KHZ800); //(num of leds, )
WiFiServer server(port);

void setup()
{
    Serial.begin(115200);
    delay(10);
    ledstrip.begin();        

    Serial.print("Connecting to: ");
    Serial.println(ssid);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    byte tries;
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        tries++;
        Serial.println(".");
        if (tries == 5)
        {
            Serial.println("Connection failed");
            return;
        }
    }
    Serial.println("\nWiFi connected");

    server.begin();
    Serial.println("Server URL: ");
    Serial.print(WiFi.localIP());
}
void print_tokens(char* strings)
{   
    byte index = sizeof(strings);
    for (int n = 0; n < index; n++)
    {
        Serial.println(strings[n]);
    }
}

char *tokenize_request(String request)
{
    char requestArray[1024];
    char *ptr = NULL;
    byte index = 0;
    char *strings[10];

    strcpy(requestArray, request.c_str());
    ptr = strtok(requestArray, ";");

    while (ptr != NULL) {
        strings[index] = ptr;
        index++;
        ptr = strtok(NULL, ";");
    }
    return *strings;
}

void loop()
{
    WiFiClient responder = server.available();
    if (!responder)
    {
        return;
    }
    while (!responder.available())
    {
        delay(1);
    }

    String request = responder.readStringUntil('@');
    char *strings[10] = {tokenize_request(request)};

    print_tokens(*strings);

    int mode = atoi(strings[0]);
    int R = atoi(strings[1]);
    int G = atoi(strings[2]);
    int B = atoi(strings[3]);

    if (mode == 1)
    {
        ledstrip.setPixelColor(5, R, G, B);
    }

    if (mode == 0)
    {
        ledstrip.setPixelColor(5, 0, 0, 0);
    }
    ledstrip.show();
    delay(1);
    Serial.println("------------------------------------------------------------------");
}

Выход последовательного монитора:

Serial Monitor Output

...