Salve a tutti, come da titolo, sto avendo problemi con la lettura analogica dai pin A6 ed A7 di un Arduino Pro Mini. In pratica sto leggendo la tensione da due potenziometri tramite il monitor seriale, il problema è che il valore di analogRead(A6) risulta essere quello letto dal pin A7, mentre il valore di analogRead(A7) è costantemente uguale a 0. Ho già testato i potenziometri su altri pin e funzionano correttamente, quindi non dovrebbe essere un problema di codice o di elettronica.
Ho notato che scambiando i valori nelle definizioni di PIN_A6 e PIN_A7 in pins_arduino.h (Arduino/hardware/arduino/avr/variants/standard) da
#define PIN_A6 = (20)
#define PIN_A7 = (21)
a
#define PIN_A6 = (21)
#define PIN_A7 = (20)
il risultato è che il valore di analogRead(A6) è corretto ed il valore di analogRead(A7) è ancora costantemente uguale a 0.
Non so cosa fare e perciò chiedo aiuto a voi prima che faccio qualche danno
Credo che sia un problema di mappatura dei pin, non ho trovato molto cercando su Google.
prova a scollegare tutto , controlla le piazzole...e collega un potenziometro alla volta
Sono saldati direttamente o hai una strip ?
EDIT:
quando provi a leggere un ingresso digitale come analogico di solito ti restituisce zero o un numero pari al fondoscala?Controlla la configurazione, oppure posta il codice , qualcuno che conosce mini arduino ci sarà sicuramente qui
Victor795 ho già fatto diversi test con un multimetro e tutto sembra essere collegato correttamente (ho tutto saldato sulle piazzole).
Victor795:
quando provi a leggere un ingresso digitale come analogico di solito ti restituisce zero o un numero pari al fondoscala?
Intendi leggere una tensione di +5v o 0v? In quel caso ogni pin analogico da A0 a A5 mi restituisce 1023 o 0, mentre A6 restituisce sempre 0 ed A7 restituisce 1023 o 0 (ma li attribuisce ad una lettura da A6).
FedericoC:
Victor795 ho già fatto diversi test con un multimetro e tutto sembra essere collegato correttamente (ho tutto saldato sulle piazzole).
Intendi leggere una tensione di +5v o 0v? In quel caso ogni pin analogico da A0 a A5 mi restituisce 1023 o 0, mentre A6 restituisce sempre 0 ed A7 restituisce 1023 o 0 (ma li attribuisce ad una lettura da A6).
Ho pensato ad un corto verso massa sul pin 20 , ma se hai controllato allora non è quello
Se sono cloni identici potrebbero essere proprio fatti male a livello hardware. Dovresti identificare i pin del microcontrollore che portano quei segnali e vedere se sono connessi ai rispettivi pin.
Dovresti avere la certezza come dice SukkoPera che il pin dell'atmel328 sia collegato alla piazzola che tu utilizzi per il potenziometro.
Ho visto che all'interno di wiring_analog.c fa una sorta di conversione sui canali dell'adc
se per ogni scheda cambia costante non sarà anche diverso per il mini pro ?tu ti stavi riferendo all'header file standard. Prova a mettere direttamente 7 che dovrebbe essere il canale 7 e non A7
SukkoPera:
Dovresti identificare i pin del microcontrollore che portano quei segnali e vedere se sono connessi ai rispettivi pin.
Sono collegati entrambi ai loro rispettivi pin, ho testato con un multimetro.
Victor795:
Ho visto che all'interno di wiring_analog.c fa una sorta di conversione sui canali dell'adc
provare a mettere 7 invece che A7 ?
se per ogni scheda cambia costante non sarà anche diverso per il mini pro ?tu ti stavi riferendo all'header file standard. Prova a mettere direttamente 7 che dovrebbe essere il canale 7 e non A7
In boards.txt, sotto la voce "Arduino Pro or Arduino Pro Mini" compare la stringa
pro.build.variant=eightanaloginputs
che richiama il file "pins_arduino.h" nella cartella "eightanaloginputs" che a sua volta include il file "pins_arduino.h" standard modificandone solo il numero di pin analogici da 6 a 8:
Ho già provato a mettere 7 al posto di A7 ma niente. Sarò mica l'unico fortunato ad avere due Pro Mini difettosi :D? Qualcuno di voi ha fatto una prova?
E' una cosa piu comune di quanto si pensa ... inconsciamente non si nota l'errore, perche' si e' sicuri di non averlo fatto (questo e' uno dei motivi principali per cui qualcosa non andrebbe mai corretto dalla persona che l'ha scritto, ma da qualcun'altro ... oppure riletto dopo una pausa di riposo o il giorno dopo ... ... ed e' anche il motivo dell'esistenza dei "correttori di bozze", che non sono mai le stesse persone che scrivono le bozze :D)