Hallo, ich möchte mit Hilfe eines ESP32 und der Blynk App einen Neopixel
Streifen ansteuern. Wenn ich auf den virtuellen Schalter V6 drücke,
möchte ich, dass ein Neopixel so lange blinkt, bis ich erneut den
Schalter betätige. Also bei Zustand 1 so lange blinken, bis sich der
Zustand auf 0 ändert. Wenn ich jedoch auf den Schalter drücke, dann
läuft die while Schleife endlos ab und im seriellen Monitor wird nach
jedem Ablauf der Schleife "1" angezeigt, obwohl ich den Schalter nochmal
drücke. Ich weiß, dass ich in der while Schleife selbst, den Zustand vom
Taster abfragen muss, aber anscheinend bekomme ich es nicht hin, da es
unendlich blinkt. Ich sitze schon seit mehreren Tagen an diesem Problem
und habe in einem anderen Forum nur frustrierende, nicht helfende
Antworten bekommen. Ich würde mich sehr freuen, wenn mir jemand bei der
while Schleife helfen kann oder vielleicht ist das ein falscher Ansatz.
#include <FastLED.h>
#define BLYNK_PRINT Serial
#define BLYNK_USE_DIRECT_CONNECT
#define FASTLED_ESP32_RAW_PIN_ORDER
#include <BlynkSimpleEsp32_BLE.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#define NUM_LEDS1 5
#define LED_TYPE WS2812
#define COLOR_ORDER GRB
CRGB leds1[NUM_LEDS1];
char auth[] = "AIiH_ZA1WUZu89MhA6QaxdtMe-E-0eDB";
#define PIN1 14
int data=255;
int r,g,b;
int d = 1000;
int wert;
void setup()
{
Serial.begin(9600);
Blynk.begin(auth);
FastLED.addLeds<LED_TYPE, PIN1, COLOR_ORDER>(leds1,
NUM_LEDS1).setCorrection( TypicalLEDStrip );
}
BLYNK_WRITE(V4)
{
r = param[0].asInt();
g = param[1].asInt();
b = param[2].asInt();
static1(r, g, b,data);
}
void loop()
{
Blynk.run();
}
BLYNK_WRITE(V5)
{
data = param.asInt();
static1(r, g, b,data);
}
void static1(int r, int g, int b,int brightness)
{
FastLED.setBrightness(brightness);
for (int i = 0; i < NUM_LEDS1; i++ )
{
leds1[i] = CRGB(r, g, b);
}
FastLED.show();
}
BLYNK_WRITE(V6)
{
wert = param.asInt();
Serial.println(wert);
while (wert==1) {
leds1[1] = CRGB(250,0,0);
FastLED.show();
delay(d);
leds1[1] = CRGB(0,0,0);
FastLED.show();
delay(d);
Serial.print(wert);
}
}