Помогите исправить код

первые шаги делаю в ардуино, и код выдает ошибку помогите решить ошибку пожалуйста
#include <Servo.h>
int joyX=0;
int angl=0;
Servo myservo;
void setup() {
myservo.attach(10);
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;{

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);}

  1. вставьте код как написано в поле редактирования сообщения

2 Какую ошибку

Берусь предположить, что приблизительно такую:

The entire code is the continuous error

Serial.print(“Power:”);  как минимум

Compilation error: expected ‘}’ at end of input

да, есть там такое дело, даже в двух местах вроде, фигурные скобки расставлены неверно

  1. Как минимум не закрыты 2 фигурные скобки.
  2. На Arduino Uno пин 0 - цифровой. Для analogRead используйте аналоговые пины (A0 - A5)
  3. Похоже что код
if (val > 0)
	{
		angl = angl + abs(val);
	}
	else
	{
		if (val < 0)
		{
			angl = angl - abs(val);
		}
	}

Можно заменить одной строчкой angl = angl + val;
4. Не обязательно писать

if (pred1) {
   ...
}
else {
   if (pred2) {
      ...
   }
}

можно

if (pred1) {
   ...
}
else if (pred2) {
   ...
}
  1. Вы же понимаете что в коде
if (angl<0) angl = 0;{
   angl=angl-abs(val);
}

то, что в фигурных скобках не стоит под условием и выполняется в любом случае?

Пошло обсуждение неправильно вставленного кода? Ну-ну.

1 лайк

Вы забыли про Помогите исправить код - #2 от пользователя xDriver