Il risultato è che la variabile eggsRotation, in modo alternato, è di valore 0 e 1 anche se non collego il filo per la lettura dello stato del pulsante, se premo il pulsante lo ignora ha sempre lo stesso comportamento.
nemo2002:
...
Il risultato è che la variabile eggsRotation, in modo alternato, è di valore 0 e 1 anche se non collego il filo per la lettura dello stato del pulsante ...
Ti stai rispondendo da solo ...
Le porte di Arduino (della MCU) sono ad alta impedenza e NON possono essere lasciate libere senza un segnale ben definito, pena ... captare anche il passaggio di una mosca (... ed oscillare tra LOW ed HIGH a caso) XD XD XD
Hai due strade ... scegliere se la porta è normalmente HIGH (la soluzione più semplice) o normalmente LOW ...
... se decidi per la porta normalmente HIGH, la pressione del pulsante dovrà portare il pin a massa. Potrai impostare lo stato fisso ad HIGH attivando le resistenze di pull-up interne alla MCU con l'istruzione
pinMode(6, INPUT_PULLUP);
.. Se invece vuoi che la porta normalmente stia LOW e con il pulsante la porti HIGH ... dovrai mettere una resistenza che tiene il pin normalmente a massa ... una 10K dovrebbe andar bene
Occhio comunque hai "rimbalzi" ... ogni interruttore che si apre o si chiude ... genera una serie di rimbalzi e dovrai applicare una tecnica di "deboucing" per avere indicazioni stabili
Significa che lo schema che ho usato è errato, infatti la resistenza da 10k va sul gnd, e una da 330 su pin di lettura dello stato.
Quale schema devo usare?
Poi risolverò il problema dei rimbalzi, ma fino ad adesso non sono riuscito a fare nulla con il pulsante.
Grazie
Lo schema è giusto ... considera che la 330 NON sarebbe strettamente necessaria ... quella serve quando usi il pin come OUTPUT per limitare la corrente assorbibile da Arduino, ma nel tuo caso usi il pin come INPUT ...
Quando l'interruttore è aperto, il pin viene tenuto a GND alla serie R1 + R2, quando l'interruttore è chiuso, il pin va HIGH tramite la R1 ...
Comincia con un semplice programmino ... dichiari il pin in INPUT e ne leggi lo stato ... accendendo e spegnedo il LED che è sul pin 13 di Arduino ... così seri sicuro che il tutto funziona. poi ... lo applichi al tuo programma.
Ah ... occhio che nello schema ... il pin è il numero 8 ... nel tuo programma lo hai dichiarato sul 6 !!!