User manual
006
<input type="checkbox" *checked5* name="ld5">D5
007
<input type="checkbox" *checked6* name="ld6">D6
008
<input type="checkbox" *checked7* name="ld7">D7
009
<br><br>
010
<input type="submit" value="Send">
011
</form></HTML>
La valutazione nel programma funziona nel modo seguente: Supponiamo che nel
modulo siano state selezionate le caselle 3, 5 e 7. L'URL cambia in:
[IP]/?ld3=on&ld5=on&ld7=on
Ciò significa che solo le caselle selezionate vengono trasmesse e possono essere
identificate in base all'indice. Questo succede proprio nella routine loop.
Innanzitutto l'intera Port D su cui si trovano le uscite digitali viene commutata su
low. Poi un loop while cerca tutti gli ID nel link delle risorse. In base all'indice dell'ld
trovato, in Id3 il 3, ad esempio, potrebbe essere creato spostando un 1 in un byte
in modo che l'indice 3 in questione generi il byte 0b0001000. Questo viene poi
collegato al valore corrente del byte OR. Ciò accade con tutti gli indici trasmessi,
finché il registro di output D ha il valore corretto. Questa forma di output al posto di
digitalWrite()forse risulta un po' insolita per gli utenti di Arduino, ma in questo caso
è molto più pratica.
001
if (esp8266.find("+IPD,"))
002
{
003
debug("Incomming Request");
004
int connectionId = esp8266.parseInt();
005
if (esp8266.find("/?")) PORTD = B00000000;
006
while (esp8266.findUntil("ld", "\n"))
007
{
008
int ld = esp8266.parseInt();
009
PORTD |= (1 << ld);
010
}
011
}
L'output delle caselle di controllo funziona al contrario, nel seguente modo: Nella