0

我尝试使用 Android 应用程序控制我的 LED 灯条。
我重新安装了 Arduino IDE,因为我不喜欢 Windows 商店版本。串行监视器由于某种原因坏了,所以我切换回 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("------------------------------------------------------------------");
}

串行监视器输出:

串行监视器输出

4

0 回答 0