User manual
002
<input type="color" name="rgb" onchange="this.form.submit()"><BR>
003
</form>
De gekozen kleur wordt nu in de vorm /?rgb=%23, gevolgd door zes bijkomende
tekens, overgedragen. De uitdrukking %23 wijst erop dat het om een hexadeci-
maal getal gaat. Voor de kleur wit, luidt de URL dus als volgt:
[IP]/?rgb=%23ffffff
Uit dit HEX-getal moet de controller nu de afzonderlijke kleurwaarde van de LED
afleiden, wat in het volgende deel van de loop-functie gebeurt:
001
if (esp8266.findUntil("?rgb=", "\n"))
002
{
003
String hexstring = esp8266.readStringUntil(‚ ‚);
004
long number = (long) strtol( &hexstring[3], NULL, 16);
005
006
int r = number >> 16;
007
int g = number >> 8 & 0xFF;
008
int b = number & 0xFF;
009
010
analogWrite(RED, r);
011
analogWrite(GREEN, g);
012
analogWrite(BLUE, b);
013
}
Door de functie strtol() wordt eerst de ontvangen tekst na %23 in een long-getal en
dit vervolgens door bitmanipulatie in drie bytewaarden omgezet. Deze worden tot
slot met de analogWrite()-functie naar de RGB-LED overgedragen.