Input su Arduino

Salve a tutti. Da molto tempo oramai provo disperatamente a controllare lo stato di una lampadina che è collegata al pin47 di arduino. Mi avvicino sempre più ma non sono ancora riuscito a trovare la soluzione. Vi posto di seguito lo sketch che mi dovrebbe creare una pagina web con scritto acceso se la luce è accesa o spento se la luce è spenta ma la pagina web anche dopo refresh e prove di accensione mi dice che la luce è sempre accesa. Chiedo se qualcuno può dirmi dove sbaglio
P.S. Possiedo arduino mega 2560 con ethernet shield in caso servisse.

#include <SPI.h>
#include <Ethernet.h>
#include <WebServer.h> 

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192, 168, 1, 210};

WebServer webserver("", 80);

boolean test;

void Start(WebServer &server, WebServer::ConnectionType type,
           char *url_param, bool param_complete)
{
  server.httpSuccess();
  test = check47();
  if ( test == false )
  server.print("<p>Spento</p>");
  test = check47();
  if ( test == true )
  server.print("<p>Acceso</p>");
  test = check47();
}
  





void setup() {

  Ethernet.begin(mac, ip);
  webserver.setDefaultCommand(&Start);
  webserver.addCommand("index.htm", &Start);
 
 
  webserver.begin();
  delay(100);

  
  pinMode(47, INPUT);
  

}



void loop()
{
  webserver.processConnection();
}


boolean check47()
{
  if (digitalRead(47)==0)
  return true;
  else 
  return false;
}#include <SPI.h>
#include <Ethernet.h>
#include <WebServer.h> 

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192, 168, 1, 210};

WebServer webserver("", 80);

boolean test;

void Start(WebServer &server, WebServer::ConnectionType type,
           char *url_param, bool param_complete)
{
  server.httpSuccess();
  test = check47();
  if ( test == false )
  server.print("<p>Spento</p>");
  test = check47();
  if ( test == true )
  server.print("<p>Acceso</p>");
  test = check47();
}
  





void setup() {

  Ethernet.begin(mac, ip);
  webserver.setDefaultCommand(&Start);
  webserver.addCommand("index.htm", &Start);
 
 
  webserver.begin();
  delay(100);

  
  pinMode(47, INPUT);
  

}



void loop()
{
  webserver.processConnection();
}


boolean check47()
{
  if (digitalRead(47)==0)
  return true;
  else 
  return false;
}

Credo che tu abbia fatto un po' di confusione nei collage dello sketch...(hai fatto incolla 2 volte) postalo meglio, perchè così non è che sia molto chiaro, dove hai preso questo esempio? ti sarai ispirato a qualcosa, purtroppo chi conosce la webserver.h su questo forum li conti su una mano e 3 di questi non li vedo da molto tempo

ciao

Scusa ma non ho capito … Non ho fato copia-incolla due volte. Comunque lo sketch lo ho elaborato io con un po di fatica. Sul web non trovo soluzioni alla mia domanda .
Comunque ti ri-posto il code

#include <SPI.h>
#include <Ethernet.h>
#include <WebServer.h> 

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192, 168, 1, 210};

WebServer webserver("", 80);

boolean test;

void Start(WebServer &server, WebServer::ConnectionType type,
           char *url_param, bool param_complete)
{
  server.httpSuccess();
  test = check47();
  if ( test == false )
  server.print("<p>Spento</p>");
  test = check47();
  if ( test == true )
  server.print("<p>Acceso</p>");
  test = check47();
}

l’hai messo 2 volte lo sketch :smiley:

comunque l’errore è qui

boolean check47()
{
  if (digitalRead(47)==0)
  return true;
  else 
  return false;
}

if (digitalRead(47) dice già se è vero o falso, praticamente gli dici "se l’input è a 1 == false

boolean check47()
{
  if (digitalRead(47))
  return true;
  else 
  return false;
}

così dovrebbe funzionare

ciao

E' un controllo inutile, però.

test = check47();
  if ( test == false )

Basta sostituirlo con:

if (!digitalRead(47)) {
  ...

COn NOT (!) la lettura è vera quando il pin è LOW.

Ok grazie tante provo subito

Non riesco a capire perchè ma non funziona.....

cosa, come e con quali sintomi/messaggi non funziona?

Ciao Uwe

ho modificato il codice secondo i consigli di pablos e leo72 ma arduino non riceve questo benedetto input. Eppure se controllo se passa corrente con il tester lungo il filo collegato al pin di input tutto va come dovrebbe

L'ho caricato ieri il tuo sketch, nel mio prototipo c'è un pulsante già collegato sul 32 e funzionava

test: apro pagina 192.168.....visualizzo "spento" tengo il pulsante premuto e faccio refresh del browser ... leggo "acceso" rilascio il pulsante e faccio refresh del browser ... leggo "spento"

cosa non funziona? Se ti aspetti che la scritta cambi da sola, la paginetta che hai non è costruita appositamente

ciao

Scusa ma forse non hai capito che anche come mi hanno consigliato ( ringrazio comunque chi mi ha aiutato ) la pagina anche se aggiorno resta sempre su spento !!!!!!!