Ошибка exit status 1 expected primary-expression before ')'

Я пытаюсь скомпилировать скетч для серводвигателя, чтобы заставить его двигаться назад (как импульс). Я использовал два цикла for, чтобы это произошло, но когда я определяю область действия перед циклом, я получаю эту ошибку. неважно, что я изменю для переменной ctr до начала цикла. Вот мой код, чтобы вы могли видеть, где я, скорее всего, ошибся. редактировать: я добавил исправления, которые были предложены в комментариях, теперь у меня новая проблема со строкой 85, я получаю сообщение об ошибке

exit status 1
expected ';' before ':' token

вот рассматриваемый код со всеми предложенными правками

 #include <ESP8266WiFi.h>
#include <Servo.h>

const char* ssid = "RETProject";
const char* password = "mporfiri";

WiFiServer server(80);

int ledPin = 13; // GPIO13
Servo servoLeft;
Servo servoRight;
// целое поле = ();
 int ctr = 0;

void setup() {
  Serial.begin(115200);
  delay(10);

  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);

  // Подключаемся к сети Wi-Fi
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Запускаем сервер
  server.begin();
  Serial.println("Server started");

  // Печатаем IP-адрес
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

  //servoLeft.attach(2);
  //servoRight.attach(4);

}

void loop() {
  // Проверяем, подключился ли клиент
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Подождем, пока клиент отправит какие-то данные
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Читаем первую строку запроса
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Совпадение с запросом

  int value = LOW;
  while (value = LOW);
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(LED_BUILTIN, HIGH);
    value = HIGH;
    servoLeft.attach(2);
    servoRight.attach(4); 

    for (ctr = 0:pulse:1) { 
      servoRight.write(ctr);
      servoLeft.write(ctr);
    }

    for (ctr = 1:-pulse:0) { 
      servoRight.write(ctr)
      servoLeft.write(ctr);
    }

  if (request.indexOf("/LED=STOP") != -1)  {
    digitalWrite(LED_BUILTIN, LOW);
    value = LOW;
    servoLeft.detach();
    servoRight.detach();
    delay(1000);

  }

// Устанавливаем ledPin согласно запросу
// цифровая запись (ledPin, значение);

  // Возвращаем ответ
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); // не забудьте об этом
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  client.print("Robot is now: ");

  if(value == HIGH) {
    client.print("Moving Forward");
  } else if(value == LOW) {
    client.print("Moving Backward");
  } else {
    client.print("Stopped");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Move Forward </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Move Backward </button></a><br />");
  client.println("<a href=\"/LED=STOP\"\"><button>STOP </button></a><br />");   
  client.println("</html>");

  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");

}

, 👍1

Обсуждение

В какой строке кода возникает ошибка? Это эта линия? int ctr = ();, @VE7JRO

да, это то, что выделяется, когда я проверяю код, @Ruben Ulloa

Попробуйте это int ctr = 0;, @VE7JRO

теперь появилась новая ошибка во втором блоке for в части цикла void, эта ошибка появляется статус выхода 1 ожидал ';' перед токеном ':' ` для (ctr = 1:-pulse:0) { servoRight.write(ctr) servoLeft.write(ctr); } `, @Ruben Ulloa

Пожалуйста, отредактируйте свой вопрос и добавьте новое сообщение об ошибке. Было бы неплохо закомментировать первую ошибку и добавить под ней рабочий код (int ctr = 0;). Можете ли вы включить «показывать номера строк» в настройках Arduino IDE? Также включите подробный вывод во время компиляции и загрузки., @VE7JRO

я сделал то, что ты просил, @Ruben Ulloa


1 ответ


1

Этот int ctr = (), вероятно, должен быть int ctr = 0

Неверный синтаксис цикла for, см.: https://www.tutorialspoint.com /cplusplus/cpp_for_loop.htm

Первый цикл for требует в конце.

,

Я исправил это, но ошибка все еще там, @Ruben Ulloa

Не могли бы вы отредактировать вопрос и показать код в том виде, в котором он есть сейчас?, @ocrdu

вопрос был отредактирован, @Ruben Ulloa

Это: `for (ctr = 0:pulse:1)` по-прежнему неправильный синтаксис, см. ответ выше., @ocrdu

мои извинения, мой начальник на моей работе предложил мне включить это в код, чтобы он двигался импульсно, как движение, я не очень хорошо разбираюсь в языке ардуино, мой единственный опыт программирования в целом до сих пор был Matlab, @Ruben Ulloa

Вы можете попробовать что-то вроде: `для (ctr = 30; ctr < 150; ctr++) { servoRight.write(ctr); servoLeft.write(ctr); }` для стреловидности от 30° до 150°., @ocrdu

замена этого для условий действительно сработала, спасибо, @Ruben Ulloa

Я не знаю, сможет ли сервопривод справиться с этой петлей; `servoRight.write(30); servoRight.write(150);` без цикла, возможно, также достаточно для того, что вы хотите., @ocrdu