Salve ragazzi vi scrivo per trovare una soluzione ad un problema.
Ho fatto realizzare 10 pcb doppia faccia silkscreen e soldermask ma purtroppo ho fatto un errore ( vedi allegato )
I tre pulsanti che uso P1 P2 P3 collegati rispettivamente a Arduino 6 7 8 purtroppo come uno scemo non gli ho messo una resistenza di pull up o meglio l'ho messa dopo il pilsante tra il pulsante stesso e il gnd. ( sarebbe stata di pull down vabbè )
Siccome sono bellini e mettere una resistenza esterna sarebbe un peccato HO LASCIATO la reistenza da 10K tra il pulsante e gnd e ho attivato con digitalwrite(pin, HIGH) il pull up interno
Solo che se vi scrivo non funziona ovvio !
Ora prima di chiedere lumi vi chiedo
Se la mia resistenza da 10K la lascio possibile che non sia idonea a tirar sù lo stato logico poichè la resistenza interna dell'arduino pare che sia da 20 K ???
Sbaglio qualcosa nel codice ?
se faccio girare il codice mi luppa in continuazione come se il pulsante fosse premuto
La pull-up interna si attiva se prima imposti il pin come INPUT, successivamente esegui il dW. Se attivi la pull-up interna NON puoi lasciare ANCHE la pull-down esterna; sul pin a quel punto deve starci il SOLO pulsante che chiude verso GND. Ho visto lo schema, non puoi limitarti ad eliminare R6-R7-R8, devi ponticellare i relativi fori per chiudere il pulsante a GND, per salvare l'estetica puoi usare delle R da 0 ohm, al posto delle 10k. Ancora, il transistor della retroilluminazione è montato al rovescio: l'emettitore va a GND e comunque tra K e collettore devi prevedere una R, a meno che tu non abbia già verificato che è presente interna all'LCD ed il consumo sia fisso intorno a 50-60mA, diversamente rischi di fare danno. Ancora il 7805 andrebbe contornato dei classici 4 condensatori: due elettrolitici e due ceramici/poliestere. Poi, visto che usi l'ADC DEVI collegare almeno l'AVcc al Vcc per alimentarlo e mettere un C da 100nF tra ARef e GND, e collegare AGND a GND, ed almeno un altro C da 100nF andrebbe messo tra Vcc e GND, molto vicino al Vcc.
Insomma visto che dovevi fare un lavoro definitivo forse potevi postarlo prima questo schema, avresti ricevuto molti consigli utili
[quote author=Michele Menniti link=topic=164102.msg1225322#msg1225322 date=1367497589]
La pull-up interna si attiva se prima imposti il pin come INPUT, successivamente esegui il dW.
Oppure, con le ultime versioni dell'IDE, si imposta così il pin:
pinMode(pin, INPUT_PULLUP);
[/quote]
Mi intrometto con una domanda, @leo per ultime versioni intendi anche 1.0.4 o solo la 1.5.x ? grazie
[quote author=Michele Menniti link=topic=164102.msg1225322#msg1225322 date=1367497589]
La pull-up interna si attiva se prima imposti il pin come INPUT, successivamente esegui il dW.
Oppure, con le ultime versioni dell'IDE, si imposta così il pin:
pinMode(pin, INPUT_PULLUP);
Mi intrometto con una domanda, @leo per ultime versioni intendi anche 1.0.4 o solo la 1.5.x ? grazie
[/quote]
il comando è stato introdotto con la 1.0.x, nel caso specifico non può usarlo visto che ha la 0023
grazie mille per il tuo aiuto. Hai ragione avrei dovuto chiedere prima.
La cosa fu svilupata la sera dopo il lavoro e dopo cena e a volte molto tardi per questo portata avanti sempre a pezzi. Questo ovviamente NON giustifica gli errori che rimangono.
Mi sono sempre chiesto a cosa servissero Aref agnd avcc ma senza pensarci troppo mentre i transistor sono stati provati prima con una breadboard e poi disegnati. Se riesco a far funzionare i pulsanti verificherò anche il resto.
Il problema però rimane su un punto.
Visto che il codice impone un pullup interno ( è corretto per la 0023 con quella sintassi o meglio funziona ? errore non ne dà ma bisognerbbe sapere se porta a 1 oppure no ) e che il ciclo del menù è semplicemene controllato da una IF che verifica lo stato logico a LOW dell 'ingresso e se non premo resistenza o meno sul piedino non arriva nulla PERCHE' LOOPA IN CONTINUAZIONE IL MENù ??
Grazie mille
chiederò più spesso
ps se compilo con la 1.0 ricevo l'odiosissimo errore
Vedo altre cose, i pin dei pulsanti sono mappati nello sketch sui pin 6, 7, 8 ma nello schema c'è collegato il sensore e un transistor, il pin 8 è libero.
I pulsanti nello schema sono collegati sui pin analogici.
Oltre a questo fai un errore nella lettura dei pulsanti; nel codice hai
Per la resistenza, puoi mettere un ponticello o una 0 ohm (che è un ponticello).
Se non colleghi Aref, Vref e Agnd, all'interno del micro la corrente fa dei giri strani.. così mi era parso di capire in un vecchio post; ma per questo aspetta i più esperti.
djdanielb:
Infine a cosa servono AREF VREF AGND ? Che succede se non li collego ?
VREF? E dove l'hai visto?
Il 328 ha AREF (pin 21), AVCC (pin 20) e GND (pin 22).
AREF serve per collegare una tensione di riferimento esterna per il comparatore. Se usi la tensione di default (VCC), collega questo pin a massa tramite un condensatore ceramico da 100 nF per dare stabilità all'ADC ed avere misure più precise.
AVCC e GND vanno sempre collegati, servono il primo per alimentare l'ADC ed il secondo GND per mettere meglio a massa tutte le componenti interne del micro.