c++ - 模拟读数的计算出现错误

标签 c++ arduino

我正在为 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 的值,但“ratio ' 总是出现 0.00。因此,我相信我陷入了循环。这里发生了什么?

此外,为了检查,我添加了“数学” float 作为快速计算,但我在串行监视器中得到的值为 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

关于c++ - 模拟读数的计算出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359198/

相关文章:

c# - 在 C++ 中允许的函数在 C# 中不允许?

C++ 从 'const char*' 到 'char' 的无效转换

c++ - arduino为多维数组赋值

c++ - 监控自身进程的内存使用情况

c++ - C++11 std::sort 在不同的 STL 实现中使用了哪些算法?

c++ - 给定一个从 0 到 n 的整数 vector ,但不是全部包含在内,我如何有效地获取未包含的整数?

Arduino Nano : is SPI supported?

c++ - 为什么Dev C++编译后PE文件中多了这么多节?

android - 连接到 Arduino mega ADK 时,Galaxy s3 无法充电

node.js - 树莓派(node.js)与Arduino uno串口通信