2017-08-07 70 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;