Je travaille sur un projet où mon Arduino Uno lit l'humidité du sol, puis envoie les données à mon Raspberry Pi 3.Conversion lecture analogique de l'humidité du sol au pourcentage
J'utilise un sol HL-69 détecteur d'humidité, qui dégage une sortie analogique. Ce qui me pose problème, c'est que le capteur donne 1023 lorsqu'il n'a pas de contact, 300 lorsqu'il est submergé dans l'eau.
Je veux convertir la sortie analogique en pourcentage de niveau d'eau, ce qui, honnêtement, me pose problème.
Ceci est le code que j'utilise.
int soilPin = A0;
int tempPin = A1;
int min = 300; //drowned in water
int max = 1000; //dry soil
void setup(){
Serial.flush();
pinMode(soilPin,INPUT);
pinMode(tempPin,INPUT);
Serial.begin(9600);
}
void loop(){
int sensorValue = analogRead(rainPin);
int tempData = analogRead(tempPin);
float percentage = (sensorValue - max)/(min - max);
double temperature = (double) tempData * (5/10.24);
Serial.print(",");
Serial.print(temperature);
Serial.print(",");
Serial.println(percentage);
delay(1000);
}
La sortie température est très bien (22,53 par exemple), mais je ne peux pas sembler obtenir le droit de niveau d'eau.
E.g Le niveau de sortie analogique est de 300 (le sol est noyé dans l'eau); Affichage: 100%
Je pense que ma formule de pourcentage est éteint, je ne repose hors tension d'un autre fil SO.
Merci d'avance.
Merci beaucoup pour votre réponse rapide. J'ai essayé la première solution et il sort un nombre négatif. J'ai réussi à résoudre le problème en utilisant la fonction map(). 'float pourcentage = carte (sensorValue, max, min, 0, 100);' Merci pour votre réponse, de toute façon. –