Вот такая ошибка выскакивает при проверке кода: expected unqualified-id before '{' token Подскажите что это.
Нужен контекст. Рядом с ошибкой есть номер строки, где она произошла. Нужен код в районе этой строки.
Код (Text): void setup() { pinMode(MOTOR_PIN, OUTPUT); for (int i = 0; i < BUTTON_COUNT; ++i) pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP); } { myServo.attach(11); }
То же самое есть тут, но только он не выдает ошибку Код (Text): analogWrite(MOTOR_PIN, speed); } { int position;
Код (C++): void setup() { pinMode(MOTOR_PIN, OUTPUT); for (int i = 0; i < BUTTON_COUNT; ++i) pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP); } // вот тут вы закончили функцию setup // вот тут вы в глобальном скоупе, где можно только объявлять и определять переменные и символы { // ... и начинаете исполнять код в глобальном скоупе. Компилятор и я вас не понимают myServo.attach(11); } Возможно вы имели в виду: Код (C++): void setup() { pinMode(MOTOR_PIN, OUTPUT); for (int i = 0; i < BUTTON_COUNT; ++i) pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP); myServo.attach(11); }
Исправил но все равно есть ошибка. Мотор не крутится. Лучше скину весь код. Код (Text): #include <Servo.h> #define MOTOR_PIN 9 #define FIRST_BUTTON_PIN 5 #define BUTTON_COUNT 3 #define SPEED_STEP (255 / (BUTTON_COUNT - 1)) Servo myServo; void setup() { pinMode(MOTOR_PIN, OUTPUT); for (int i = 0; i < BUTTON_COUNT; ++i) pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP); myServo.attach(11); } void loop() { for (int i = 0; i < BUTTON_COUNT; ++i) { if (digitalRead(i + FIRST_BUTTON_PIN)) continue; int speed = i * SPEED_STEP; analogWrite(MOTOR_PIN, speed); } { int position; myServo.write(90); delay(500); myServo.write(0); delay(2000); } }
Компилятор может указать на ошибку в синтаксисе, но не в логике. Он же не знает, какого результата вы хотите добиться. Вставьте в код отладочный вывод в Serial и проследите за переменными и ходом выполнения программы.
Вам нужно выяснить, как на самом деле работает программа. Для этого в интересующие места программы вставляется отладочный вывод. Затем по выводу анализируете ход выполнения программы и находите проблемные места. Код (C++): if(x == 5) { Serial.print("x=5"); ... } else { Serial.print("x="); Serial.print(x); ... } Код (C++): analogWrite(MOTOR_PIN, speed); Serial.print("speed="); Serial.print(speed); Принцип ясен?
Принцип ясен все вписал, насколько я понял надо смотреть в мониторе последовательного порта. Ничего не появляется.
А порт инициализировать не забыли? Код (C++): void setup() { Serial.begin(9600); } Возьмите за правило выкладывать текущую версию кода, если она отличается от предыдущей. Вот вы что-то туда вписали, и говорите, что не работает. А как нам узнать, что и как вы вписали?
Вот весь код. Код (Text): #include <Servo.h> #define MOTOR_PIN 9 #define FIRST_BUTTON_PIN 5 #define BUTTON_COUNT 3 #define SPEED_STEP (255 / (BUTTON_COUNT - 1)) Servo myServo; void setup() { pinMode(MOTOR_PIN, OUTPUT); for (int i = 0; i < BUTTON_COUNT; ++i) pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP); { Serial.begin(9600); } myServo.attach(11); } void loop() { int position; for (int i = 0; i < BUTTON_COUNT; ++i) { if (digitalRead(i + FIRST_BUTTON_PIN)) continue; int speed = i * SPEED_STEP; analogWrite(MOTOR_PIN, speed); Serial.print("position="); Serial.print(position); } { myServo.write(90); delay(150); myServo.write(0); delay(5000); } }
Монитор порта настроен на скорость 9600? Код (C++): { Serial.begin(9600); } Зачем пишете фигурные скобки там, где они не нужны? Пишите код с отступами или нажимайте Ctrl+T в Arduino IDE для автоматического форматирования
Я не так давно начал увлекаться этим и еще не достаточно понимаю где фигурные скобки нужны, а где нет. А какая должна быть?
Скорость порта должна быть одинаковая и в мониторе порта, и в скетче Serial.begin(9600); задает скорость порта 9600 в скетче. Логично предположить, что в мониторе порта тогда тоже должно быть 9600.