我正在尝试使用土壤湿度传感器制作LCD显示器的水分百分比,当我使用基本的数学代码行时,例如:
double dryPercentage = (value / 1023) * 100;
我的错误值。当我把它保持干燥时,它会像它应该的那样返回100,但是当我把它放入水中时它会说50左右。当我把它放入水中时,传感器的值是200,所以变量dryPercentage应该返回20%。我假设它与舍入或变量类型有关。这是我的完整代码:
#include <LiquidCrystal.h>
int Contrast=20;
int sensor = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(){
analogWrite(6,Contrast);
pinMode(sensor, INPUT);
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop(){
int value = analogRead(sensor);
double dryPercentage = (value / 1023) * 100;
int moistPercentage = 100 - dryPercentage;
Serial.print("Input: ");
Serial.print(value);
Serial.print("--");
Serial.print("Dryness: ");
Serial.println(dryPercentage);
lcd.setCursor(0, 0);
lcd.print("Hi");
lcd.setCursor(0, 1);
lcd.print("-Stuart");
}
答案 0 :(得分:0)
也许类型定义应该像
float value = analogRead(sensor);
float dryPercentage = (value / 1023.0) * 100.0;
float moistPercentage = 100.0 - dryPercentage;
如果你想要四舍五入的最终值
float value = analogRead(sensor);
int dryPercentage = (value / 1023.0) * 100.0;
int moistPercentage = 100.0 - dryPercentage;