基本数学没有返回正确答案

时间:2017-08-07 02:25:42

标签: c++ arduino

我正在尝试使用土壤湿度传感器制作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");
}

1 个答案:

答案 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;