ho provato la libreria TinyWebServer bella e con qualche modifica l'ho fatta funzionare....
Ma sinceramente ho guardato lo sketch e non ho capito come fà a fare accendere il led.....
Lo fa allo stesso modo degli esempi nell'ide dove le pagine le costruisci sullo sketch, legge carattere per carattere
while ((c = client.read())>0)
{
readString += (char)c;
if((char)c=='\n')
...
...
}
quindi per ogni mio tasto dovrò riscrivere quella riga ma sostituendo blinkled con pippo per esempio...
no, lo fai solo per una volta, è il messaggio che scrivi dopo blinkeled che contiene quello ad arduino interessa.
nel loop ci metti tutto quello che il programma deve fare quel web.process(); va a vedere c'è una richiesta altrimenti non fa niente è come se ci fosse if (client.available()) {
Nella pag html metti tutti i pulsanti che vuoi, quando lo premi sarà il Js a spedire ad arduino (tramite la funzione ajax) il messaggio, poi nello sketch vai a riconoscere il messaggio
cosa succede ora che arduino ha letto il messaggio?
lo script js si aspetta una risposta (lo vedi nella funzione success) ed è proprio nella risposta che spedisci al browser quello che vuoi che venga visualizzato sulla tua pagina.
Quindi approfitti della risposta per mandare tutti i dati al browser, non potresti fare altrimenti, questo è l'unico momento dove puoi spedire i dati al client dato che arduino essendo un server non è in grado di chiamare il client e dirgli visualizza questo e quello.
esempio:
Clent si connette
-
client domanda: come stai?
-
webserver risposta: lo stato dei pin 1,2,3 è 0,1,1 (che vai a leggere nel success)
-
client domanda: mi spegni il led 2? (premendo un pulsante sulla pag web)
-
webserver risposta: lo stato dei pin 1,2,3 è 0,0,1 (che vai a leggere nel success)
Cosa fa l'esempio della lampadina di Ovidiu Predescu's?
Fa si che una volta connesso il client, questo gli chiede come sta ogni 500ms così puoi tenere sott'occhio in tempo quasi reale lo stato di arduino a video, vedrai le tue caselle sul monitor accendersi e spegnersi da sole, nel tuo caso invece di spedire un byte solo per un led solo nella stringa ci metti tutte le informazioni che vuoi, sarà lo sketch in base a un criterio di lettura a capire cosa si stanno dicendo.
io ad esempio uso questa nello sketch per visualizzare i pin digitali
client.print("DP,");
client.print((String)PINA + "," + (String)PINB + ",");
client.print((String)PINC + "," + (String)PIND + ",");
client.print((String)PINE + "," + (String)PING + ",");
client.print((String)PINH + "," + (String)PINJ + ",");
client.print((String)PINL + "," + (String)PINF + ",");
client.print((String)PINK + "," + (String)ore + ",");
client.print((String)minuti + ",");
client.print((String)secondi + "," + (String)giorno + ",");
client.println((String)mese + "," + (String)anno);
ottenendo a video questa
DP,32,156,0,4,3,32,8,0,0,0,0,11,57,26,24,2,2013
qui ci sono tutti i 69 pin della mia mega più la sua data di sistema, sarà un duro compito del javascript capire cosa arduino sta dicendo 