Pages: [1]   Go Down
Author Topic: Arduino e controllo led dal web  (Read 724 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 2
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti!
Vorrei implementare un server con il mio ardu ethernet che passandogli http://indirizzo_ardu/led1=on
interpreti al stringa e accenda il relativo led collegato alla board.
Ho risolto la messa in opera del web server e la circuiteria, ma non capisco come possa il server leggere "led1" interpretare la stringa... per poi interpretarne il valore voluto "on" ... sapreste darmi una dritta? ovviamente c'è la possibilità che invii piu richieste in contemporanea del tipo led1=on&led2=off
Vi ringrazio in anticipo
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2315
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao
nell'esempio di cui parli, WebServer, il client.read() legge di fatto la richiesta del browser (ovvero la url).
Quindi il modo più semplice per processare richieste che arrivano dal client, è salvare il risultato del client.read() in una stringa, e poi effettuare dei confronti.

Partendo dall'esempio WebServer:
Code:
...
 if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
...

lo si può espandere, per esempio, in questo modo

Code:
....
//stringa usata per salvare la richiesta http; variabile globale
String httpRequest = "";
...
 if (client.available()) {
        char c = client.read();
        Serial.write(c);

        //salviamo la richiesta su una stringa
        httpRequest += c;

        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {

                //cerchiamo sulla richiesta eventuali comandi
                if (httpRequest.indexOf("led1=on") > -1) {             
                                //accendi il led1
                                ...
                }
                if (httpRequest.indexOf("led2=on") > -1) {             
                                //accendi il led2
                                ...
                }
                ...
        //una volta processata la richiesta, svuotare la stringa
        httpRequest = "";
        }
...

Chiaramente il codice è da ottimizzare, ma spero ti sia di aiuto.
Logged

Offline Offline
Jr. Member
**
Karma: 2
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Avevo proprio creato qualcosa che gli assomigliava moltissimo... ora mi è rimasto di capire come far corrispondere ad ogni richiesta la rispettiva porta.. work in progess
Logged

Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 758
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao, il mio shield ethernet è doverso quindi non so che codice darti cmq:
quello chescrivi nell'url: /?led1=on   non è altro che un GET. ovvero passi delel variabili cosi.
nel mio sketch si verificava ogni ricezione: se scrivevo ver=on si accedeva un led, se ver=off si spegenva.
purtroppo non ho capito perchè non posso scrivere nomi piu lunghi: da ver a verde.sarà un problema di buffer boh
Comunque prova a cercare le parole chiavi GET ethernet e arduino. ti uscirà qualcosa
Logged


Pages: [1]   Go Up
Jump to: