ожидаемое первичное выражение перед токеном ',' - PullRequest
0 голосов
/ 10 июля 2020

Хорошо, я пытался создать сервопривод, управляемый звуком, с помощью кода 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 голосов
/ 10 июля 2020

Похоже, вам нужно немного изучить, как работает код C ++ и Arduino.

Во-первых, эта строка:

pinMode(Servo, OUTPUT);

pinMode ожидает номер контакта как первый аргумент. Сервопривод - это имя типа, а не номер контакта. Если вы посмотрите примеры для библиотеки Servo, вы заметите, что в них никогда не было строк pinMode для серво штыря. Я не уверен, почему вы подумали, что вам нужна эта строка, но вы должны просто удалить всю строку.

Затем есть эта строка:

digitalWrite(pos = 0);

Я не уверен, что вы ' повторюсь и здесь. digitalWrite ожидает номер контакта и ВЫСОКИЙ или НИЗКИЙ. Посмотрите на примеры digitalWrite. Вы когда-нибудь видели такое? Я думаю, вы просто хотите установить для переменной pos значение 0. Она уже установлена ​​в 0 с того места, где вы ее создали. Вы также можете просто удалить всю эту строку.

Код l oop столь же запутан. У вас есть такая строка:

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

Похоже, вы как-то перепутали digitalWrite с l oop. Взгляните на некоторые примеры для библиотеки Servo и посмотрите, не можете ли вы понять, как это должно выглядеть.

Единственное, что делает digitalWrite, - это устанавливает вывод на 5 В или 0 В. Он не устанавливает переменные. Он просто устанавливает цифровое напряжение на цифровом выводе. В круглых скобках всегда будет номер контакта, запятая и ВЫСОКИЙ или НИЗКИЙ. Если вы помещаете что-то еще в скобки после команды digitalWrite, значит, вы делаете что-то неправильно.

Пожалуйста, уделите немного времени, чтобы прочитать некоторые материалы по Arduino. Существует множество руководств, которые помогут вам научиться использовать эти команды. Вы не можете просто придумать синтаксис, вы должны использовать их по назначению.

...