Выполнение простого включения/выключения ИК-сервопривода.
Я новичок в Ардуино и программировании. Я начинаю проект, и одной из моих задач было научиться встраивать сервоприводы в Arduino и изучать датчики. Я хотел объединить и то, и другое, но у меня возникли некоторые проблемы с синтаксисом. Могу ли я получить помощь?
Это мой код:
// тест сервопривода
#include <Servo.h>
#include <IRremote.h>
#define START_BUTTON //разместить код для кнопки //код получен из start
button
#define STOP_BUTTON //разместить код для кнопки //код получен от stop
button
int servopin1 = 13; // первый сервопривод
int servopin2 = 12; // второй сервопривод
int pos = 0;
int receiver_pin = 4; // выходной контакт
int vcc = 5; // vcc ик-датчик
int gnd = 6; // gnd для ик-датчика
IRrecv receiver(receiver_pin);
decode_results output;
Servo Servo1;
Servo Servo2;
void setup() {
// поместите сюда ваш код настройки для однократного запуска:
Serial.begin(9600);
receiver.enableIRIn();
pinMode(vcc, OUTPUT);
pinMode(gnd, OUTPUT);
digitalWrite(vcc, HIGH);
Servo1.attach(servopin1);
Servo2.attach(servopin2);
}
void loop() {
// поместите сюда свой основной код для многократного выполнения:
if (receiver.decode(&output)) {
unsigned int value = output.value;
switch(value) {
case START_BUTTON:
if (pos <= 180){
Servo1.write(pos);
delay(500);
pos = pos + 30;}
else {
pos=0;
}
if (pos <= 180){
Servo2.write(pos);
delay(500);
pos = pos + 30;}
else {
pos=0;}
break;
case STOP_BUTTON:
Servo1.write(0);
delay(200);
Servo2.write(0);
delay(200);
break;
}
}
}
//^положения и задержки сервопривода 2
}
Я пытаюсь понять, почему я получаю следующую ошибку:
C:\Users\Alex\Documents\Arduino\Servo_test2Library\Servo_test2Library.ino:
In function 'void loop()':
Servo_test2Library:38: error: expected primary-expression before ':' token
case START_BUTTON:
^
Servo_test2Library:53: error: expected primary-expression before ':' token
case STOP_BUTTON:
^
C:\Users\Alex\Documents\Arduino\Servo_test2Library\Servo_test2Library.ino:
At global scope:
Servo_test2Library:64: error: expected declaration before '}' token
}
^
Multiple libraries were found for "IRremote.h"
Used: C:\Users\Alex\Documents\Arduino\libraries\IRremote-2.2.3
Not used: C:\Users\Alex\Documents\Arduino\libraries\Arduino-IRremote-master
Using library Servo at version 1.1.2 in folder: C:\Program Files
(x86)\Arduino\libraries\Servo
Using library IRremote-2.2.3 at version 2.2.3 in folder:
C:\Users\Alex\Documents\Arduino\libraries\IRremote-2.2.3
exit status 1
expected primary-expression before ':' token
1 ответ
▲ 4
В верхней части вашего кода есть:
#define START_BUTTON //разместить код для кнопки //код получен из start
button
#define STOP_BUTTON //разместить код для кнопки //код получен от stop
button
#define
требует 2 частей после себя. Первая — это новое имя, которое создается, а вторая — это определение нового имени.
Вы должны указать ожидаемое значение для условия START_BUTTON
после имени, например:
#define START_BUTTON 0x48
#define STOP_BUTTON 0x49
Или что-либо еще, что посылает ваш ИК-пульт.
Кроме того, у вас слишком много закрывающих скобок (}
) в конце.
[...]
case STOP_BUTTON:
Servo1.write(0);
delay(200);
Servo2.write(0);
delay(200);
break;
} // ЭТО ЗАКРЫВАЕТ ПЕРЕКЛЮЧАТЕЛЬ
} // ЭТО ЗАКРЫВАЕТ ОПЕРАТОР IF
} // ЭТО ЗАКРЫВАЕТ loop()
//^положения и задержки сервопривода 2
} // ЭТО НЕ ЗАКРЫВАЕТ НИЧЕГО, ЧТО БЫЛО ОТКРЫТО
,
@jose can u c
Смотрите также:
- Как заставить сервопривод вращаться на угол больше 180°
- Подключение Arduino к сервоприводу с внешним источником питания
- Мой сервопривод не работает плавно
- Бесполезная проводка коробки и код
- Почему сервопривод не перемещается по углам должным образом
- Микро сервопривод не работает с Arduino UNO
- поворот позиционного серводвигателя более чем на 180 градусов
- Почему loop() останавливается?