基本的数学没有返回正确的答案
问题描述:
我试图让一个液晶显示器采用了土壤水分传感器显示水分的百分比,当我使用的代码基本数学系,例如:基本的数学没有返回正确的答案
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");
}
答
也许类型定义应该像
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;
什么是'一个错误的value'?你有什么价值? –
明显的问题:'analogRead(sensor)'返回什么? –