Название темы должно отражать содержание. Переформулируй или пост будет удалён.
Пишу скетч для управления несколькими реле через esp8266. Создал функцию setRelay:
Функция успешно работает и при вызове просто в коде:
, и в цикле:
НО! когда я при помощи цикла создаю управляющие web-страницы получается какая-то еруйня. Вот как генерю страницы:
Я не правильно передаю i во внутрь HTTPserver.on?
C++:
void setRelay(byte relayNum, byte relayState) {
switch(relayState) {
case 2:
digitalWrite(pinRelay[relayNum], !digitalRead(pinRelay[relayNum]));
break;
case 1:
digitalWrite(pinRelay[relayNum], relayStateON);
break;
case 0:
default:
digitalWrite(pinRelay[relayNum], relayStateOFF);
break;
}
delay(50);
}
C++:
setRelay(3, 1);
C++:
for (byte i = 1; i < numRelays+1; i++) {
pinMode(pinRelay[i], OUTPUT);
delay(50);
setRelay(i, 0);
}
C++:
for (byte i = 1; i < numRelays+1; i++) {
Serial.println(i); delay(1000);
HTTPserver.on("/relay" + String(i) + "On", [&i](){
Serial.println(i); delay(1000);
HTTPserver.send(200, "text/html", webPageRedirect2Main);
setRelay(i, 1);
});
HTTPserver.on("/relay" + String(i) + "Off", [&i](){
HTTPserver.send(200, "text/html", webPageRedirect2Main);
setRelay(i, 0);
});
HTTPserver.on("/relay" + String(i) + "Switch", [&i](){
HTTPserver.send(200, "text/html", webPageRedirect2Main);
setRelay(i, 2);
});
Serial.println("Control pages for Relay" + String(i) + " created"); delay(500);
}