Arduino: 错误:在'if'前预期有未限定的id(使用ping传感器)。

问题描述 投票:1回答:4

我修改的一个脚本有问题。 我得到一个 "Ping_Library_Example:9: error: expected unqualified-id before 'if'"我肯定我在某个地方犯了语法错误,有什么想法吗?顺便说一下,原脚本中的 "if "是 "void loop "而不是 "if"。 当使用when时,可能也会出现同样的错误。 有什么想法吗?

#include <Ping.h>

Ping ping = Ping(13,74,29);

void setup(){
  Serial.begin(115200);
}

if(digitalRead == HIGH){
  ping.fire();
  Serial.print("Microseconds: ");
  Serial.print(ping.microseconds());
  Serial.print(" | Inches ");
  Serial.print(ping.inches());
  Serial.print(" | Centimeters: ");
  Serial.print(ping.centimeters());
  Serial.println();
}
if-statement arduino ping
4个回答
4
投票

Arduino程序需要一个 loop() 函数来运行;只需将该函数替换为一个 if 条件不工作。试试把 if 块状 loop() 功能。

此外: digitalRead 是一个函数,你需要告诉它从哪个引脚读取数据。digitalRead(5) 从5号引脚读取。

试试这样。

void loop() {
  if(digitalRead(5) == HIGH) {
    ping.fire();
    // insert other code here
  }
}

(把5改成任何你想读的引脚 或者把这个值赋给一个变量然后传入)


3
投票

你不能在函数外写if表达式。我想应该是这样的。

void loop() {
   if(digitalRead(5) == HIGH){ //checks pin 5
     ping.fire();
     Serial.print("Microseconds: ");
     Serial.print(ping.microseconds());
     Serial.print(" | Inches ");
     Serial.print(ping.inches());
     Serial.print(" | Centimeters: ");
     Serial.print(ping.centimeters());
     Serial.println();
   }
}

这段代码循环,检查digitalRead是否为high,如果是,则进行ping.希望能帮到你 :)


1
投票

对于一些额外的信息,可能对偶然发现这个答案的人有帮助。

我也遇到了同样的问题,但我的问题是最后不小心省略了一个}。这导致if语句在任何函数之外。简单的打字错误。


0
投票

我也收到了同样的错误,原因是注释中的反斜杠打错了,如果你能想象到这样的事情。违规的行数是。

int my_recvDone() {
    //=======================\
    if ( !g_patternReceived ) {

我想这是由于解析器中的某种连行功能造成的 可能会在其他代码区域表现为不同的编译器错误...

© www.soinside.com 2019 - 2024. All rights reserved.