Leggere 2 analog Input in serial monitor

Salve a tutti, questo è il mio primo post qui, spero che mi possiate aiutare.
Sono alle prime armi e sto cercando fare una sorta di datalogger e di leggere con "Arduino uno", due (in realtà me ne servono 5) ingressi analogici diversi convertendoli in volt e farli visualizzare tramite il serial monitor.
ho trovato una base su questo forum per un solo ingresso analogico e funziona alla grande, ho provato a far leggere 2 ingressi diversi ma arduino mi legge lo stesso valore sia su A0 che su A1 anche se uno dei due è scollegato.
cosa sto sbagliando?

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  
  int sensorValue = analogRead(A0);  // read the input on analog pin 0:
  int sensorValue2 =analogRead(A1);  // read the input on analog pin 1:
  
  float voltage = sensorValue * (5.0 / 1023.0);  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage2 = sensorValue2 * (5.0 / 1023.0);  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  // print out the value you read:
  Serial.print("Pompa 1=_" );
  Serial.print(voltage);
  Serial.print("  Pompa 2=_" );
  Serial.println(voltage2);

  
}

Ciao,
prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI e di leggere il REGOLAMENTO ...

Poi ...
... se facevi qualche piccola ricerca qui sul forum ... avresti scoperto che é un argomento di cui più volte si è parlato :slight_smile:

Quando cambi canale dell'ADC, la prima lettura fatta sul secondo pin è da scartare perché riflette il valore letto sul pin precedente.
Questo è un problema che esiste su quasi tutte le MCU ed i vari produttori consigliano vari modi per risolvere il problema. Alla fine il modo più semplice è quello di scartare la prima lettura dopo il cambio canale.

Guglielmo

grazie della risposta,
ho provato e cercato molto su due ingressi analogici ma non ho trovato nessuno col mio stesso problema.
non ho ben capito cosa intendi con "cambio canale". Io al momento ho due ingressi 0-5 volt che arrivano a due ingressi differenti ma leggo i medesimi valori. che soluzione prendere?

Tu stai leggendo su DUE canali diversi …
… devi … leggere il primo, leggere il secondo e buttare la lettura, leggere di nuovo il secondo … e così via. Ogni volta che cambi ingresso, devi buttare la prima lettura che fai.

Guglielmo

Fai una lettura a vuoto.

analogRead(A0);
int sensorValue = analogRead(A0);  // read the input on analog pin 0
analogRead(A1);
int sensorValue2 =analogRead(A1);  // read the input on analog pin 1

ho provato a fargli fare una lettura a vuoto come dice PaoloP ma non cambia nulla

DanieleNitro:
Salve a tutti, diversi ma arduino mi legge lo stesso valore sia su A0 che su A1 anche se uno dei due è scollegato.
cosa sto sbagliando?

void setup() {

// initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
 
  int sensorValue = analogRead(A0);  // read the input on analog pin 0:
  int sensorValue2 =analogRead(A1);  // read the input on analog pin 1:
 
  float voltage = sensorValue * (5.0 / 1023.0);  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage2 = sensorValue2 * (5.0 / 1023.0);  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  // print out the value you read:
  Serial.print(“Pompa 1=" );
  Serial.print(voltage);
  Serial.print("  Pompa 2=
” );
  Serial.println(voltage2);

}

e strano cercare di leggere un pin analogico scollegato, comunque i pin analogici scollegati tendono a seguire i pin analogici collegati ma basta un non nulla per fargli cambiare valore proprio perché sono scollegati, i pin che non si usano meglio metterli come ingressi digitali e fare pullup interno

nel setup es
pinMode (15, INPUT);
digitalWrite (15,HIGH);

DanieleNitro:
ho provato a fargli fare una lettura a vuoto come dice PaoloP ma non cambia nulla

Non avevo notato che lo stai lasciando scollegato ... :astonished:

... sono pin ad alta impedenza e sentono anche il volare di una mosca. Se un pin lo leggi .. ci devi attaccare qualche cosa ... NON lo puoi lasciare volante ... :grin:

Guglielmo

P.S. : Comunque, ciò non toglie che se, al cambio canale non fai la lettura a vuoto, avrai valori errati ...

Volevo ringraziare tutti per l'aiuto!
ho imparato che gli ingressi analogici, se letti, non vanno mai lasciati liberi ma si possono mettere verso la terra per risolvere al problema
Io ho avuto la fortuna di dover usare un partitore di tensione con i negativi in comune per tutti gli ingressi e così anche se non ho tensioni in ingresso l'arduino mi legge sempre 0 volt XD.
Ho fatto alcuni test a banco e sembra andare alla grande
Domani farò i test mettendolo al lavoro, speriamo bene essendo il mio primo progetto un pò più "serio"
Se non ci saranno problemi vi invierò foto schema e codice completo :smiley: :smiley: