Go Down

Topic: Letture digitalRead sfasate (Read 477 times) previous topic - next topic

AleCune93

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

pablos

#1
Jul 05, 2013, 01:53 pm Last Edit: Jul 05, 2013, 01:59 pm by pablos Reason: 1
Secondo te senza programma e/o schema cosa dovremmo capire?

Quote
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?
no comment

AleCune93

Non è che ci sia tanto di programma..

Code: [Select]
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..

pablos

#3
Jul 05, 2013, 01:59 pm Last Edit: Jul 05, 2013, 02:05 pm by pablos Reason: 1
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

http://arduino.cc/en/Tutorial/Debounce

se vuoi chiarimenti sul debounce per ottenere un antirimbalzo o meglio sapere cos'è è perchè hai quegli effetti random http://it.wikipedia.org/wiki/Circuito_anti-rimbalzo
no comment

gpb01

#4
Jul 05, 2013, 02:03 pm Last Edit: Jul 05, 2013, 02:05 pm by gpb01 Reason: 1

...
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 :

Code: [Select]
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 :)

Guglielmo
Search is Your friend ... or I am Your enemy !

Brunello

e perlomeno una resistenza di Pullup

che o metti esterna o abiliti con il comando

pinMode(12,INPUT_PULLUP);

AleCune93

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!!! ;)

Go Up