【问题标题】:Change a variable to text for serial monitor (Arduino Uno)将变量更改为串行监视器的文本(Arduino Uno)
【发布时间】:2021-03-24 09:37:55
【问题描述】:

我正在使用显示距离的 HC-SR04 超声波传感器,有两个 if 语句,如果它低于 0,则显示为 0(该部分按预期工作),如果超过 4 米(距离变量为厘米) 它应该说“超出范围”,这就是我遇到的问题。这是完整的代码

const int TrigPin = 2; 
const int EchoPin = 3; 
float distance;

void setup() {
  Serial.begin(9600); 

  pinMode(TrigPin,OUTPUT);
  pinMode(EchoPin,INPUT);
}

void loop () {

  digitalWrite(TrigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin,LOW);

  distance = pulseIn(EchoPin,HIGH)/58.0; // divided by 58 to change into cm

  if(distance < 0) {
    distance = 0;
  } 
  if(distance > 400) {
    distance = "Out of range";
  }

  Serial.println(distance );
}

这会返回一个错误,上面写着“无法在赋值中将 'const char [13]' 转换为 'float'”(第 26 行),有没有办法在不使用新变量的情况下转换距离变量? (距离变量已经有另一个 if 语句)。我是这方面的初学者,所以解决方案可能非常简单,我只是不知道。

【问题讨论】:

  • 该错误在哪一行得到诊断?如果您引用完整的错误,那将被包括在内。

标签: c++ arduino-uno arduino-ultra-sonic serial-monitor


【解决方案1】:

distance 是浮点数,不能将浮点数设置为 char *。

有什么方法可以在不使用新变量的情况下转换距离变量 变量?

好吧,在将变量声明为 int 之后,您不能将其转换为另一种数据类型。您可以做的是将其声明为 char * (string),然后当您想将其设置为 0 等数字时,将该数字转换为字符串。也就是说,如果你真的想为两者都使用一个变量。

【讨论】:

    【解决方案2】:

    “有什么方法可以在不使用新变量的情况下转换距离变量?” 你不需要转换它或使用另一个变量。不要更改distance 而是发送一个字符串:

    void loop () {
    
      digitalWrite(TrigPin,LOW);
      delayMicroseconds(2);
      digitalWrite(TrigPin,HIGH);
      delayMicroseconds(10);
      digitalWrite(TrigPin,LOW);
    
      distance = pulseIn(EchoPin,HIGH)/58.0; // divided by 58 to change into cm
    
      // You don't need this check. pulseIn returns an unsigned long. It's always >= 0
      /*if(distance < 0) {
        distance = 0;
      } */
      if(distance > 400) {
        Serial.println("Out of range");
        return;
      }
    
      Serial.println(distance );
    }
    

    与您的问题无关。您无需检查 distance 是否为负数。 pulseIn 返回一个 unsigned long。它总是非负数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多