我修改的一个脚本有问题。 我得到一个 "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();
}
Arduino程序需要一个 loop()
函数来运行;只需将该函数替换为一个 if
条件不工作。试试把 if
块状 loop()
功能。
此外: digitalRead
是一个函数,你需要告诉它从哪个引脚读取数据。digitalRead(5)
从5号引脚读取。
试试这样。
void loop() {
if(digitalRead(5) == HIGH) {
ping.fire();
// insert other code here
}
}
(把5改成任何你想读的引脚 或者把这个值赋给一个变量然后传入)
你不能在函数外写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.希望能帮到你 :)
对于一些额外的信息,可能对偶然发现这个答案的人有帮助。
我也遇到了同样的问题,但我的问题是最后不小心省略了一个}。这导致if语句在任何函数之外。简单的打字错误。
我也收到了同样的错误,原因是注释中的反斜杠打错了,如果你能想象到这样的事情。违规的行数是。
int my_recvDone() {
//=======================\
if ( !g_patternReceived ) {
我想这是由于解析器中的某种连行功能造成的 可能会在其他代码区域表现为不同的编译器错误...