标记 '","' 之前的预期主表达式

expected primary-expression before token ','

本文关键字:表达式 标记      更新时间:2023-10-16

好吧,所以我一直在尝试用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);

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

首先,这一行:

pinMode(Servo, OUTPUT);

pinMode需要一个pin号作为第一个参数。伺服是一种类型的名称,而不是引脚编号。如果你看伺服库的例子,你会注意到他们从来没有任何针模式行的伺服引脚。我不知道你为什么认为你需要这条线,但你应该简单地删除整条线。

然后是这一行:

digitalWrite(pos = 0);

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

循环代码同样令人困惑。你有这条线:

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

看起来你不知怎么把digitalWrite和for循环搞混了。看看伺服库的一些例子,看看你是否不知道它应该是什么样子。

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

请花点时间阅读一些关于Arduino的材料。有很多教程可以帮助您学习如何使用这些命令。你不能只是编语法,你必须按照它们的意图使用它们。