Я сделал небольшой звуковой визуализатор с двумя esp8266.Клиентская сторона отправляет числа от 0 до 12 по Udp на серверную сторону (каждую миллисекунду или около того).светодиоды (на стороне сервера) должны срабатывать только в том случае, если это число> 8, но когда я отключаю музыку после длинного потока данных> 8, светодиоды продолжают мигать в течение пары секунд.
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
bool udp_mode_7 = false;
void mode_7() {
if (!udp_mode_7) {
Udp.begin(localUdpPort);
udp_mode_7 = true;
}
int packetSize = Udp.parsePacket();
if (packetSize) {
Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
int value = packetBuffer[0] * 256 + packetBuffer[1];
if (value / 256 > strip.numPixels() - mode_7_threshold) {
int r = random(255);
int g = random(255);
int b = random(255);
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, r, g, b);
strip.setPixelColor(strip.numPixels() - i, r, g, b);
strip.show();
delay(20);
if (i == 6) {
break;
}
}
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, 0, 0, 0);
strip.setPixelColor(strip.numPixels() - i, 0, 0, 0);
strip.show();
delay(20);
if (i == 6) {
break;
}
}
}
for(int i = 0; i < UDP_TX_PACKET_MAX_SIZE; i++) packetBuffer[i] = 0;
// Udp.stop();
// udp_mode_7 = false;
}
}