Letture digitalRead sfasate

So che è il (già) secondo topic di oggi che scrivo, forse inutile, ma non riesco a capacitarmi di questa cosa..

Ho programmato arduino perchè mi restituisca, nella console seriale, il valore del pin 12..
Non c'è niente collegato ad arduino, e lui continua a darmi valori sfasati, continua ad oscillare tra 0 e 1 cosi a caso.. Senza che io lo tocchi..
Come se non bastasse, ovviamente, quando collego 2 cavi (al GND e al pin 12) non capisce quando li unisco e quando sono separati.. mi da sempre 0 e 1 a caso..
Non riesco proprio a capire cosa gli stia succedendo.. magari sono tordo io che sbaglio qualcosa.. boh O_O

Secondo te senza programma e/o schema cosa dovremmo capire?

Come se non bastasse, ovviamente, quando collego 2 cavi (al GND e al pin 12) non capisce quando li unisco e quando sono separati.. mi da sempre 0 e 1 a caso..

hai configurato il pin 12 nel setup?

Non è che ci sia tanto di programma..

void setup(){
  Serial.begin(9600); 
  pinMode(12,INPUT);
}

void loop(){
Serial.println(digitalRead(12));
  delay(500);
}

Schemi non ce ne sono, visto che non c'è niente di collegato all'arduino.. O al limite c'è un filo che va dal GND al pin 12..

bhe allora le cose cambiano .... ti serve un debounce, ma soprattutto una resistenza di pull o UP o DOWN che stabilizzi lo stato 1 o 0... una configurazione come se avessi un pulsante, ma con 2 fili così non avrai segnali molto precisi

se vuoi chiarimenti sul debounce per ottenere un antirimbalzo o meglio sapere cos'è è perchè hai quegli effetti random Circuito anti-rimbalzo - Wikipedia

AleCune93:
...
Non c'è niente collegato ad arduino, e lui continua a darmi valori sfasati, continua ad oscillare tra 0 e 1 cosi a caso.. Senza che io lo tocchi..
...

Allora, intanto un pin in input lasciato aperto ... data l'alta impedenza e normale che non sia stabile ... comincia quindi ad attivare la resistenza di pull-up interna definendo :

pinMode(12, INPUT_PULLUP);

e vedrai che a pin aperto starà fermo sul valore HIGH (vd. esempio http://arduino.cc/en/Tutorial/InputPullupSerial).

Poi, per i rimbalzi, segui quello che ti ha scritto Pablos :slight_smile:

Guglielmo

e perlomeno una resistenza di Pullup

che o metti esterna o abiliti con il comando

pinMode(12,INPUT_PULLUP);

Ora devo scappare, me la studio quando torno la PULLUP..

Comunque grazie mille, era proprio questo che sbagliavo.. Me la ricordavo per il pulsante, ma da stupido non mi sono neanche reso conto che alla fine quello che faccio chiudendo il circuito è lo stesso del pulsante XD

Ora funziona perfettamente.. Grazie ancora!!! :wink: