Conversione segnale trasduttore di pressione in pressione

Ciao a tutti ho scritto questo codice che mi serve per leggere un segnale analogico proveniente da un trasduttore di pressione. quello che voglio fare è trasformare questo segnale in bar, so che a 0,5v equivale a 0 bar e 4,5v ha 30 bar facendo delle provo inoltre ho notato che 128 equivale a 0 bar e 327 equivale a 7,11bar.
il mio problema è che la conversione funziona ma non utilizza i decimali che per me sono fondamentali. allego il mio codice

float trasduttore;
float valore;

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

void loop() {
 trasduttore = analogRead(A0);

  valore=map(trasduttore,128,327,0,7.11);
 trasduttore = analogRead(A0);
   Serial.println(valore);Serial.println(trasduttore);
 
  delay(5000);
  }

Grazie a chi mi riesce ed aiutare

La map() usa aritmetica intera

Fai le proporzioni tu con calcoli espliciti

Oppure cerca
"La mappa dei tipi di arduino"

Invece di 7.11 metti 711 e poi dividi il risultato della map per 100 facendo un cast verso una variabile in virgola mobile

Inoltre perchè scrivi due volta "trasduttore = analogRead(A0);" ???
basta la prima, la seconda è di troppo

int trasduttore;
float valore;

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

void loop() 
{ trasduttore = analogRead(A0);
  valore = map(trasduttore,128,327,0,711);
  valore = valore / 100.0;
  Serial.print("Valore: "); Serial.print(valore);
  Serial.print(" Trasduttore: "); Serial.println(trasduttore);
  delay(5000);
}
1 Like

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