Salve, sto facendo delle prove con dei pulsanti e i pin analogici di arduino. Ho attrezzato la breadboard come l'immagine:
In pratica quando premo il pulsante si accende il led e fin qui tutto ok; sul pulsante ho collegato poi una resistenza che va in un pin analogico di arduino. Utilizzando la funzione analogRead() mi sono accorto che restituisce ugualmente un valore diverso da 0 anche se il pulsante non è premuto, è normale o sono io che sto sbagliando qualcosa? Sicuramente è la seconda ipotesi visto che sono una capra in elettronica... ;D
ciao Pelletta,
che valori ca Ti legge quando il tasto non é premuto?
Che valore hanno le resistenze, sono entrambe di 220 Ohm?
Ciao Uwe
c'è qualcosa di sbagliato nel collegamento del pulsante, per fare il collegamenti giusti dovresti fare solo due semplici cose:
- il filo azzurro che adesso collega la resistenza al pin 5, scollegarlo dall'analog5 e collegarlo a massa;
- sull'altro capo della resistensa collegare un filo che va al pin analog5.
Come nell'esempio che c'è sul sito:
In pratica adesso ti legge valori a caso perchè è come se stessi collegando un filo volante al pin analogico, fa da antenna e leggi un po' di disturbi elettromagnetici che ci sono intorno.
Ringazio per la spiegazione, adesso funziona. Ho notato inoltre che i pin analogici restituiscono valori casuali anche se non c'è collegato nulla, forse è per lo stesso motivo. Cosa farei senza di voi, siete grandi ragazzi!
eh si, il motivo credo sia lo stesso. Ma perchè usi un pin analogico? per un solo pulsante usa un pin digitale un filo più semplice da gestire nel codice
Usavo un pin analogico perchè in realtà volevo utilizzare più pulsanti con resistenze diverse per fare una pulsantiera. Ho visto che nel playground c'è un tutorial per fare la stessa cosa ma pensavo che in questo modo funzionasse ugualmente. Ho preparato pure il pcb ma la gatta furiosa fa i figli ciechi:
Spiego un pò il pcb: piste rosse 5V, piste nere GND, pista verde il segnale che doveva andare sul pin analogico. Il pcb è composto da dieci circuiti uguali, per facilitarne la comprensione ho racchiuso un circuito nel rettangolo. In pratica i due led raggruppati nel rettangolo stanno sempre accesi, l'altro si accende quando il pulsante è premuto; su ogni pulsante quando viene premuto passano 5V attraverso delle resistenze differenti, le ho messe con valori che vanno da 10K a 100K con l'incremento di 10K per pulsante. Pensavo quindi che potesse funzionre ugualmente ma evidentemente sbagliavo.
probabilmente non hai tenuto conto della caduta di tensione sul led... prova a rifare i conti tenendo in considerazione anche quella!
Ottimo lavoro, ma sono fondamentali i LED? Perchè ti complicano decisamente la vita! anche io sto lavorando su un circuito per una tastiera a singolo PIN. Io vorrei utilizzare almeno 10 canali interruttore per porta analogica, dite che sono troppi? Con delle resistenze all' 1% facendo il calcolo arduino non credo dovrebbe avere problemi a sentire la differenza.
Cosa ne dite?
Si, i led devono esserci. Sto facendo delle prove ma da profano in elettronica vado a tentativi sempre sperando di non bruciare qualcosa. Ho provato a collegare il segnale (pista verde) ad un potenziometro con la seguente configurazione:
pin dx pot. -------------- segnale pcb (pista verde)
pin centrale pot. -------- pin analogico arduino
pin sx pot. --------------- gnd arduino
Sembra un pò migliorato nel senso che adesso quando nessun pulsante è premuto la funzione analogRead mi restituisce 3 come output e il valore sembra mantenersi costante. Ho notato però che i valori ricevuti quando premo i pulsanti subiscono delle variazioni, ad esempio un pulsante a volte restituisce 140 e a volte 135 o valori intermedi; mi resta dunque piuttosto difficile poter stabilire il range di valori quando devo assegnare una funzione ad un pulsante in quanto potrebbe andare in conflitto con gli altri pulsanti visto che il loro valore non è stabile. Ormai il pcb l'ho fatto e devo trovare qualche rimedio, per ora vado a tentativi ma qualche progresso mi sembra di averlo ottenuto. Il metodo del potenziometro che ho adottato può essere valido oppure avete qualche consiglio in merito più efficace?
Saluti.
Ciao io ha costruito la tastiera a 7 tasti di Acorrias e funzione bene anzi discrimina anche se il pulsante e stato premuto o se continua ad esserlo.
Anche io ho bisogno di gestire gli ingressi con l'analogico poichè sfrutto le uscite digitali per i servomotori.
Quindi elettronicamente funziona bene, ho aperto un topic "analogbuttos" per la gestione del codice ma sembra che nessuno sia in grado di rispondermi.
Ciao
E' normale che Arduino non legga sempre lo stesso valore delle resistenze, quindi dovresti impostarti dei range di valori accettabili per ogni pulsante.
Dubbio: ma con la configurazione di Acorrias non si possono usare resistenze tutte uguali, tanto in caso di doppia pressione non vince il pulsante collegato più in alto?
In alternativa sul forum avevo trovato questo:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267115381
collegando le resistenze in parallelo si possono anche leggere le combinazioni di più tasti