Lettura Input Analogici multipli (AnalogRead) con ciclo for (o while)

Salve a tutti. Vorrei chiedere una mano a chi è più esperto di me per scrivere un codice che mi permetta di leggere in maniera "simultanea" (lasciatemi passare il termine anche se non corretto nel caso di Arduino) gli input analogici nella mia scheda. Premetto che già sono riuscito a scrivere un codice funzionante che mi permetta di farlo senza ciclo for, ma per una questione di pulizia, eleganza e correttezza sono interessato a snellire il codice introducendo un ciclo for (o while). I miei tentativi sono per ora andati a vuoto:

int i ;
const int pinanalogico[]={A0,A1,A2,A3,A4,A5};
float forc;

void setup() {
  Serial.begin(921600);
}

void loop() {
  for(i=0; i < 7; i++){
    int SensorValue(i) = analogRead(pinanalogico[i]);
    float voltage(i) = SensorValue(i) * (5.00/1023);
    float force(i) = (voltage(i) - 0.04356) / 0.0785;
      if (force(i) < 0){ 
    forc(i) = 0.00;
    Serial.print("Forza  = ");
    Serial.println(forc(i));
   }
      else{
    forc(i) = force(i);
    Serial.print("Forza  = ");
    Serial.println(forc(i)); 
  }
 
  }
}

In particolare, mi da un errore all'11esima riga:

expected ',' or ';' before '=' token

Non ho ben capito a cosa si riferisca.
Grazie per l'aiuto!

Perchè quello che hai scritto non ha senso. Un vettore/array tipo pinanalogico lo usi con le quadre.
Quei voltage, force, etc. con parentesi tonde NON hanno senso

.....
const byte pinAnalogico[]={A0,A1,A2,A3,A4,A5};
......
void loop() 
{ int SensorValue; 
  float Voltage, Force;
  for(i=0; i < 6; i++)
  { SensorValue = analogRead(pinAnalogico[i]);
    Voltage = SensorValue * (5.00/1023.0);
    Force = (Voltage - 0.04356) / 0.0785;
    if (Force<0) 
    { forc=0;
    } 
    else
    { forc=Force;
    }             // oppure unica riga forc = ( Force<0 ? 0 : Force);
    Serial.print("Forza  = ");
    Serial.println(forc); 
  }

Oltre a quanto detto da @nid69ita, aggiungo che gli "estremi" del ciclo for sono sbagliati.

Nell'array tu hai un totale di 6 elementi, ma esegui il ciclo 7 volte!
Gli array partono SEMPRE da 0 quindi il for deve diventare

for(i=0; i < 6; i++)

O meglio ancora, per migliorare la "flessibilità" del codice, puoi calcolare la lunghezza effettiva dell'array:

int len = sizeof(pinAnalogico) / sizeof(pinAnalogico[0];
for(i=0; i < len; i++)
....

inoltre conviene fare una lettura a vuoto, ogni volta che si cambia pin analogico

int len = sizeof pinAnalogico  / sizeof pinAnalogico[0];
for(i=0; i < len; i++)
   {
   analogRead(pinanalogico[i]);
   dalay(1); 
   SensorValue = analogRead(pinanalogico[i]);
.
.
.
    }

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.