Вопрос задан 06.07.2026 в 17:36. Предмет Информатика. Спрашивает Бондарев Дима.

Помогите найти ошибку на ардуино
Вот скетч
#include
int joyX = 0;
int angl = 0;

Servo myservo;
void setup() {
myservo.attach(9);
pinMode(joyX,INPUT);
Serial.begin(9600);
}
void loop(){
int val = (analogRead(joyX)/64)-8;
if(val>0){
angl=angl+abs(val);
}
}
else{
if (val < 0){
angl=angl-abs(val);}
}
if(angl<0)angl = 0;
if(angl>180)angl = 180;
Serial.print("Power:");
Serial.println(val);
Serial.print("angle:");
Serial.println(angl);
myservo.write(angl);
int spd = 500
if(val !=0){
spd = 600/abs(val);
}
Serial.print("Speed:");
Serial.println(spd);
Serial.println("-----------");
delay(spd);
}



вот ошибка которую он выдает
Arduino: 1.6.5 (Windows 8.1), Плата"Arduino/Genuino Uno"

sketch_may16a:17: error: expected unqualified-id before 'else'
expected unqualified-id before 'else'

Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки

Перейти к ответам

Ответы на вопрос

Отвечает Kazarin Gleb.

Ошибка «expected unqualified-id before 'else'» возникает из-за лишней закрывающей фигурной скобки. В твоём коде после блока if стоит две скобки } подряд — одна закрывает if, а вторая преждевременно завершает функцию loop(). Поэтому else оказывается снаружи всех функций, и компилятор не понимает, к чему он относится.

Кроме того, есть ещё две ошибки:

  • Не дописана строка #include — должно быть #include <Servo.h> (иначе сервопривод не будет работать).
  • Пропущена точка с запятой после int spd = 500.

Вот как должен выглядеть исправленный код (основная часть):

#include <Servo.h>
int joyX = 0;
int angl = 0;
Servo myservo;
void setup() {
  myservo.attach(9);
  pinMode(joyX, INPUT);
  Serial.begin(9600);
}
void loop() {
  int val = (analogRead(joyX) / 64) - 8;
  if (val > 0) {
    angl = angl + abs(val);
  } else {
    if (val < 0) {
      angl = angl - abs(val);
    }
  }
  if (angl < 0) angl = 0;
  if (angl > 180) angl = 180;
  Serial.print(\"Power:\");
  Serial.println(val);
  Serial.print(\"angle:\");
  Serial.println(angl);
  myservo.write(angl);
  int spd = 500;
  if (val != 0) {
    spd = 600 / abs(val);
  }
  Serial.print(\"Speed:\");
  Serial.println(spd);
  Serial.println(\"-----------\");
  delay(spd);
}

Убери лишнюю скобку, добавь #include <Servo.h> и точку с запятой — ошибка исчезнет.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос