Выполнение простого включения/выключения ИК-сервопривода.

Я новичок в Arduinos и программировании. Я начинаю проект, и одной из моих задач было научиться встраивать сервоприводы в 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

, 👍0


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
  }  // ЭТО ЗАКРЫВАЕТ цикл()

  //^положения и задержки сервопривода 2
} // ЭТО НЕ ЗАКРЫВАЕТ НИЧЕГО, ЧТО БЫЛО ОТКРЫТО
,