Ошибка 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("");
}
@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
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
В какой строке кода возникает ошибка? Это эта линия?
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