令牌','之前的预期主要表达式

时间:2020-07-10 01:19:34

标签: c++ arduino microphone servo

好,所以我一直在尝试用Arduino代码制作声音控制的伺服器,但我似乎做错了什么。发生了什么事,我正在使用程序的内置检查器来测试代码,并且一直在给我一个错误代码,

预期在令牌“,”之前的主要表达式

我曾尝试根据错误消息修复它,但没有任何帮助。我将在下面提供代码。

int micsensorpin=3;
int micState;
int pos = 0;
#include <Servo.h>
Servo explorer1;

void setup(){
  pinMode(Servo, OUTPUT);
  pinMode(micsensorpin, INPUT);
  digitalWrite( micsensorpin, LOW);
  digitalWrite(pos = 0);
  explorer1.attach(2);
}

void loop(){
  micState=digitalRead(micsensorpin);
  if(micState==HIGH)
  {
    digitalWrite(pos = 0; pos <=70; pos +=8);
    explorer1.write(pos);
    delay(500);
    
  }
    else  {
      digitalWrite(pos=70; pos >=0; pos -= 8);
      explorer1.write(pos);
      delay(500);
    }
  
}

错误行是pinMode(Servo, OUTPUT);

1 个答案:

答案 0 :(得分:0)

您似乎需要对C ++和Arduino代码的工作方式进行一些研究。

首先,这一行:

pinMode(Servo, OUTPUT);

pinMode希望将引脚号作为第一个参数。伺服是类型的名称,而不是引脚号。如果您看一下Servo库的示例,您会发现它们在伺服引脚上从来没有任何pinMode行。我不确定您为什么认为您需要此行,但您只需删除整个行即可。

然后是这一行:

digitalWrite(pos = 0);

我也不知道您要在这里做什么。 digitalWrite需要一个引脚号以及一个HIGH或LOW。查看digitalWrite的示例。你见过这样的人吗?我认为您只想将pos变量设置为0。从创建位置开始,它已经设置为0。您也可以简单地删除整行。

循环代码同样令人困惑。您有这行:

digitalWrite(pos = 0; pos <=70; pos +=8);

您似乎已经将digitalWrite混淆为for循环了。看一下Servo库的一些示例,看看是否无法弄清楚它的外观。

digitalWrite唯一要做的就是将引脚设置为5V或0V。它不设置变量。它只是在数字引脚上设置数字电压。括号中的值始终是引脚号,逗号和HIGH或LOW。如果要在digitalWrite命令后的括号中放入其他内容,则说明您做错了。

请花一点时间阅读Arduino上的一些资料。有很多教程可以帮助您学习如何使用这些命令。您不仅可以组成语法,还必须按预期使用它们。