Go Down

Topic: Lettura analogRead sempre 1023 [RISOLTO] (Read 752 times) previous topic - next topic

mofabio

Jun 27, 2015, 10:33 pm Last Edit: Jun 28, 2015, 09:06 am by mofabio
Ciao,
sto facendo qualche esperimento per provare un pò questa fantastica scheda.
Ho un problema con analogRead, legge sempre 1023.
Sto provando con un partitore di tensione semplicemente con un potenziometro, ma su tutti gli ingressi analogici ho questo problema.
Lo sketch è molto semplice:

int analogPin = 3;
int val = 0;          
void setup()
{
 analogReference(DEFAULT);
 Serial.begin(9600);  

}
void loop()
{
 val = analogRead(analogPin);
 Serial.println(val);            
 delay(500);
}

Per scrupolo ho provato anche a sostituire l'atmega ma ho sempre lo stesso problema.

Qualche suggerimento?

Grazie

pablos71

#1
Jun 28, 2015, 01:42 am Last Edit: Jun 28, 2015, 01:46 am by pablos
A parte che avete il brutto vizio di non dire mai di quale atmega parlate, se lo hai sostituito probabilmente è un 328

Analog in 0 = Pin 14
Analog in 1 = Pin 15
Analog in 2 = Pin 16
Analog in 3 = Pin 17
Analog in 4 = Pin 18
Analog in 5 = Pin 19

comunque è preferibile specificarli come
Analog in 0 = Pin A0
Analog in 1 = Pin A1
Analog in 2 = Pin A2
Analog in 3 = Pin A3
Analog in 4 = Pin A4
Analog in 5 = Pin A5

val = analogRead(A2);
val è un float non un intero

Esistono i tutorial online per i dubbi, anche esempi dentro l'IDE  

Il codice va racchiuso negli appositi tag </>
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

mofabio

Ciao Pablos,
l'atmega come supposto da te è un 328 visto che l'ho sostituito,

Inoltre cosa intendi con questa tabella?
Analog in 0 = Pin 14
Analog in 1 = Pin 15
Analog in 2 = Pin 16
Analog in 3 = Pin 17
Analog in 4 = Pin 18
Analog in 5 = Pin 19

se Pin intendi quelli del 328 a me risulta un'altra piedinatura:
Analog in 0 = Pin 23
Analog in 1 = Pin 24
Analog in 2 = Pin 25
Analog in 3 = Pin 26
Analog in 4 = Pin 27
Analog in 5 = Pin 28


in più la funzione analogRead restituisce un intero non un float come riportato sulla reference guide:

https://www.arduino.cc/en/Reference/AnalogRead

Returns
int (0 to 1023)

suggerimenti su quale può essere il problema?

Grazie

mofabio

Trovato il problema, c'era una saldatura sotto lo zoccolo che univa il PIN AVCC con ARef.

astrobeed

Trovato il problema, c'era una saldatura sotto lo zoccolo che univa il PIN AVCC con ARef.
Ovviamente Avcc non deve essere unito con Aref, però anche in questo caso l'ADC funziona lo stesso visto che comunque di default Aref è connesso, internamento al micro, ad Avcc.
Scientia potentia est

mofabio

astrobeed intendi dire che avrebbe dovuto funzionare cmq connettendo AVCC con ARef?

pablos71

Vero, hai ragione diventa un float quando ne fai una formula ... abitudine  sorry :)
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

Go Up