Как передать значение?

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
Название темы должно отражать содержание. Переформулируй или пост будет удалён.
Пишу скетч для управления несколькими реле через esp8266. Создал функцию setRelay:
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);
    }
НО! когда я при помощи цикла создаю управляющие web-страницы получается какая-то еруйня. Вот как генерю страницы:
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);
  }
Я не правильно передаю i во внутрь HTTPserver.on?
 

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
relay1
C++:
0
Relay64 (pin 78) ON! (set to 1)
relay2
C++:
0
Relay64 (pin 78) ON! (set to 1)
Реле всего 4 на данный момент
 

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
29
1
Когда пробовал =i у тебя не скомпилировалось? Или скомпилировалось, но работало неверно?
C++:
C:\Users\40E4~1\AppData\Local\Temp\arduino_modified_sketch_344060\amarokRelayWithWEB_v2.2.ino: In function 'void init_HTTP()':

amarokRelayWithWEB_v2.2:217:50: error: expected ',' before 'i'

     HTTPserver.on("/relay" + String(i) + "On", [=i](){

                                                  ^

exit status 1
expected ',' before 'i'