模拟读数计算错误

Calculations with analog readings coming out wrong

本文关键字:错误 计算 模拟      更新时间:2023-10-16

我正在编程一个Arduino Uno,由于在对一些传感器值进行计算时遇到问题,我陷入了while循环。当我读取我的四个传感器值并比较前两个与后两个的比率时,无论值是多少,我都会得到0.00。这是我的代码:

while ( ( (frontleft + frontright) / (backleft + backright) <= 0.8 ) || ( (frontleft + frontright) / (backleft + backright) > 1.2) ) {
    if (backleft + backright > frontleft + frontright) {
      myStepper2.step(10);
    }
    if (backleft + backright < frontleft + frontright) {
      myStepper2.step(-10);
    }
    int backleft = analogRead(A0);
    int backright = analogRead(A1);
    int frontleft = analogRead(A2);
    int frontright = analogRead(A3);   
    Serial.print("Backleft Reading: ");
    Serial.println(backleft);
    Serial.print("n");
    Serial.print("BackRight Reading: ");
    Serial.println(backright);
    Serial.print("n");
    Serial.print("Frontleft Reading: ");
    Serial.println(frontleft);
    Serial.print("n");
    Serial.print("Frontright Reading: ");
    Serial.println(frontright);
    Serial.print("n");
    float ratio = (frontleft + frontright) / (backleft + backright);
    float math = (5 + 6) / (4 + 5);
    Serial.print("Math: ");
    Serial.println(math);
    Serial.print("Ratio: ");
    Serial.println(ratio);
    Serial.print("n");
    delay(500);
  }    

我得到了传感器backleftbackrightfrontleftfrontright的值,但"比值"总是为0.00。正因为如此,我相信我陷入了困境。这是怎么回事?

此外,为了检查一下,我添加了"数学"浮点作为快速计算,但我在串行监视器中得到了1.00的值。为什么?应该是1.222。

尝试

float ratio = (frontleft + frontright) / float((backleft + backright));
while ( ratio <= 0.8  ||  ratio > 1.2)  {
    //do your thing here
    ratio = (frontleft + frontright) / float((backleft + backright));
}

然后当你试图打印时

Serial.println(ratio, 4) //prints four decimal places