【问题标题】:expected primary-expression before token ','令牌“,”之前的预期主表达式
【发布时间】:2020-10-30 16:54:20
【问题描述】:

好的,所以我一直在尝试使用 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 microphone servo


    【解决方案1】:

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

    首先,这一行:

    pinMode(Servo, OUTPUT);
    

    pinMode 需要一个 pin 号作为第一个参数。伺服是一种类型的名称,而不是引脚号。如果您查看伺服库的示例,您会注意到它们从来没有任何用于伺服引脚的 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 的资料。有很多教程可以帮助您学习如何使用这些命令。你不能只是编造语法,你必须按照它们的意图使用它们。

    【讨论】:

    • 对不起,我还是喜欢学习这些东西。我已经从伺服器上的运动和声音传感器的灯光中获得了运动。我会做这些,看看还有什么需要修复的。我看看例子
    猜你喜欢
    • 2012-10-30
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2017-02-01
    相关资源
    最近更新 更多