Problema banale con digitalRead

Ciao a tutti, sono nuovo di Arduino e sto facendo qualche prova per imparare. Ho importato questo sketch: http://arduino.cc/en/Reference/digitalRead

Non capisco come mai il valore "val" letto da digitalRead e postato sul monitor seriale continui a cambiare in autonomia da 1 a 0.. poi fa una sequenza di 1.. dopo un po va a 0 per qualche secondo.. e così via in modo random..

Addirittura se stacco i collegamenti al pulsante e quindi fisicamente non c'è nulla connesso al pin 7 la lettura "causale" non cambia e il led si accende/spegne in autonomia.. (non dovrebbe darmi sempre 0 ?)

Dove sbaglio? :| Grazie ciao.

ops.. letto meglio le note:

If the pin isn't connected to anything, digitalRead() can return either HIGH or LOW (and this can change randomly).

ok quindi usando uno switch con soli 2 pin (non 3) il valore letto in caso di contatto aperto equivale a non collegare il cavo!

davide80: il valore letto in caso di contatto aperto equivale a non collegare il cavo!

Esatto, e un pin in lettura non collegato a nulla può fornire sia 0 che 1 a seconda delle emissioni emi nelle sue vicinanze. Puoi usare uno switch normalmente aperto, o chiuso, a patto di tenere il pin legato ad uno stato logico tramite una resistenza di pullup o pulldown, il modo più semplice è usare lo switch N/A collegato tra il pin e GND attivando la pullup interna del pin.

Ciao. Grazie per la info. Ho risolto più velocemente usando la costante INPUT_PULLUP, vedi esempio qui: http://arduino.cc/en/Tutorial/InputPullupSerial

Come scritto nelle note occorre tenere conto che gli stati LOW e HIGH sono invertiti. Grazie!