好,所以我一直在尝试用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);
。
答案 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上的一些资料。有很多教程可以帮助您学习如何使用这些命令。您不仅可以组成语法,还必须按预期使用它们。