aggiornare pagina web enc28j60 con pulsante esterno

Sto tentando inutilmente di comandare un led sia da pagina web con questo tutorial enc28j60_tutorial/_7_WebLed.ino at master · lucadentella/enc28j60_tutorial · GitHub,
che con un pulsante collegato ad un pin di arduino ma senza risultato. Il problema è che da pagina web tutto funziona, ma se accendo o spengo il led dal pulsante non si aggiorna la pagina web creando incongruenze.
allego la routine del pulsante che ho inserito subito dopo il void loop()

// routine pulsante antirimbalzo
 val = digitalRead(push);  // legge il valore del pulsante
 // controlla se è accaduto qualcosa
 if ((val == HIGH) && (vecchio_val == LOW)) {
   statoLed = !statoLed;
   delay(15);                // attesa di 15 millisecondi
 }
 vecchio_val = val;            // ricordiamo il valore precedente di val
 if (statoLed) {
   digitalWrite(ledPin, HIGH);   // accende il led
 }
 else {
   digitalWrite(ledPin, LOW);    //spegne il led
 }

....

m_franco:
Il problema è che da pagina web tutto funziona, ma se accendo o spengo il led dal pulsante non si aggiorna la pagina web creando incongruenze.
....

È normale.
Forse non Ti é chiaro il funzionamento della pagina web e del Browser.

Per una pagina con puro codice HTML vale:
Un browser chiama dal server la pagina Web (in questo caso situato su Arduino) e Arduino risponde con il HTML che il browser visualizza. Basta. Non c'é altra interazione tra browser e server finche non c'é una nuova chiamata. Il server non ha nessuna possibilitá di rimandare qualcosa al browser autonomamente.

Se Tu chiedi Tuo fratello dove va stasera lui Ti risponde che va al cinema. Se poi cambia idea e va in pizzeria non te lo dice finche non gliene richiedi.

Rimedi:

  • Firefox ha un Add che aggiorna (ricarica) una pagina ad intervalli fissi definibili.
  • Usi del codice javascript che fa caricare la pagina ogni tot tempo.

Ciao Uwe

Come hai consigliato avevo già aggiunto la riga nella costruzione della pagina web ma l'incongruenza continua. Mettiamo che accendo il led con il pulsante esterno e aggiorno statoLed, quando la pagina si aggiorna se era nella condizione OFF, spegne il led !.
Quello che non comprendo è come dire alla pagina web che lo stato del led è cambiato in questa routine:

void loop() {

 //routine pulsante
 //....vedi primo post....
 //------------------

 word len = ether.packetReceive();
 word pos = ether.packetLoop(len);
 
 if(pos) {
   
   if(strstr((char *)Ethernet::buffer + pos, "GET /?status=ON") != 0) {
     Serial.println("Received ON command");
     ledStatus = true;
   }

   if(strstr((char *)Ethernet::buffer + pos, "GET /?status=OFF") != 0) {
     Serial.println("Received OFF command");
     ledStatus = false;
   }
   
   if(ledStatus) {
     digitalWrite(ledPin, HIGH);
     statusLabel = on;
     buttonLabel = off;
   } else {
     digitalWrite(ledPin, LOW);
     statusLabel = off;
     buttonLabel = on;
   }
     
   BufferFiller bfill = ether.tcpOffset();
   bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
     "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
     "<html><head><title>WebLed</title></head>"
      "<meta http-equiv=\"refresh\" content=\"5\">"
     "<body>LED Status: $S "
     "<a href=\"/?status=$S\"><input type=\"button\" value=\"$S\"></a>"
     "</body></html>"      
     ), statusLabel, buttonLabel, buttonLabel);
   ether.httpServerReply(bfill.position());
 }
}

avevo già aggiunto la riga nella costruzione della pagina web ma l'incongruenza continua. Mettiamo che accendo il led con il pulsante esterno e aggiorno statoLed, quando la pagina si aggiorna se era nella condizione OFF, spegne il led !.

Aggiungici l ' IP

<META HTTP-EQUIV=REFRESH CONTENT=5;url=http://192.168.x.x/>

> m_franco: ti ricordo che in conformità al regolamento, punto 7, devi editare i tuoi post (quindi NON scrivendo nuovi post, ma utilizzando il bottone More -> Modify che si trova in basso a destra dei tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Per evitare futuri problemi, ti consiglio di rileggere con MOLTA attenzione il su citato REGOLAMENTO.

Grazie,

Guglielmo

Mi scuso con Guglielmo, ma è uno dei primi post che invio. Ho provveduto alle modifiche come consigliato. Ringrazio quanti mi hanno risposto uwefed e brunello22, ma al momento non ho risolto.

m_franco:
Mi scuso con Guglielmo, ma è uno dei primi post che invio. Ho provveduto alle modifiche come consigliato.

Guglielmo

Visto l'argomento banale, speravo in qualche aiuto. Forse non ho spiegato bene cosa intendo fare: con Arduino uno + Heternet ENC28J60 vorrei accendere un led sia con pulsante web che con pulsante collegato ad un pin che accenda o spenga il led aggiornando anche il suo stato sul web. In questi giorni ho cercato esempi ma senza esito, sono tutti simili e accendo il led solo da web. Grazie a tutti