1

我修改的脚本有问题。我收到“Ping_Library_Example:9: error: expected unqualified-id before '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();
}
4

4 回答 4

4

Arduino程序需要一个loop()函数才能运行;简单地用if条件替换函数是行不通的。尝试将if块放入loop()函数中。

此外,digitalRead它是一个函数,您需要告诉它要从哪个引脚读取。例如,digitalRead(5)从引脚 5 读取。

尝试这样的事情:

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

(将 5 更改为您要读取的任何引脚,或将该值分配给变量并将其传递)

于 2013-01-26T15:48:29.460 回答
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 是否为高,如果是,则进行 ping。希望能帮助到你 :)

于 2013-01-26T15:44:49.823 回答
1

有关可能对偶然发现此答案的人有所帮助的其他信息,

我只是遇到了同样的问题,但我的问题是最后意外省略了一个 }。这导致 if 语句位于任何函数之外。简单的错字。

于 2015-09-30T01:21:07.073 回答
0

如果您能想象这样的事情,由于评论中的反斜杠错字,我收到了同样的错误。违规行是:

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

我认为这是由于解析器中的某种行连续性功能,并且可能会在其他代码区域中表现为不同的编译器错误......

于 2014-04-27T15:31:54.897 回答