2017-08-07 76 views
-1

我试图让一个液晶显示器采用了土壤水分传感器显示水分的百分比,当我使用的代码基本数学系,例如:基本的数学没有返回正确的答案

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"); 
} 
+1

什么是'一个错误的value'?你有什么价值? –

+0

明显的问题:'analogRead(sensor)'返回什么? –

回答

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;