Я работаю над проектом, в котором мой Arduino Uno читает почвенную влагу, а затем передает эти данные в моей Raspberry Pi 3.Преобразование аналогового Reading влажности почвы в процентах
Я использую HL-69 почвы детектор влаги, который выдает аналоговый выход. У меня возникла проблема в том, что датчик дает 1023 при отсутствии контакта, 300 при погружении в воду.
Я хочу преобразовать аналоговый выход в проценты уровня воды, с которым я честно сталкиваюсь.
Это код, который я использую.
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);
}
Температура на выходе нормально (например 22,53), но я не могу показаться, чтобы получить право уровня воды.
E.g Уровень аналогового выхода - 300 (Почва тонет в воде); Дисплей: 100%
Я думаю, что моя процентная формула выключена, я просто основывал ее на другом потоке SO.
Заранее спасибо.
Большое вам спасибо за ваш быстрый ответ. Я пробовал первое решение, и он выводит отрицательное число. Мне удалось исправить это, используя функцию map(). 'float percent = map (sensorValue, max, min, 0, 100);' Благодарим вас за ответ, в любом случае. –