HamzaMcBob Ответов: 2

Я не понимаю, почему я получаю эту ошибку


Я получаю ошибку "ожидаемый неквалифицированный идентификатор перед числовой константой"
(обратите внимание, что это код Arduino)




кроме того , код еще не закончен, но если он скомпилирован, то ошибка все еще отображается


Я просто создаю проект, который может управлять двумя двигателями и некоторыми светодиодами

Спасибо



//The pulseIn Function
#include <Servo.h> //Use the Servo librarey for generating PWM
Servo ESC1;
Servo ESC2;              //name the servo object, here ESC
byte PWM_PIN = A0;

//keypoint is on 1490 around
int pwm_value;

void setup() {
  //Coil 1
  pinMode(22, OUTPUT);
  pinMode(23, OUTPUT);
  pinMode(24, OUTPUT);
  pinMode(25, OUTPUT);
  //Coil 2
  pinMode(27, OUTPUT);
  pinMode(28, OUTPUT);
  pinMode(29, OUTPUT);
  pinMode(30, OUTPUT);
  //Coil 3
  pinMode(32, OUTPUT);
  pinMode(33, OUTPUT);
  pinMode(34, OUTPUT);
  pinMode(35, OUTPUT);

  pinMode(PWM_PIN, INPUT);
  Serial.begin(115200);
  ESC1.attach(8);
  ESC1.write(10);
  ESC2.attach(9);
  ESC2.write(10);
  delay(5000);
}
int val;
int num;

void loop() {
  do {

    switch (num) {
      case 1:

        break;

      case 2:

        break;

      case 3:

        break;

      case 4:

        break;

      case 5:

        break;

      case 6:

        break;


        num += 1;
        if (num > 6) {
          num = 1;
        }
    }

  }
  while (1 != 2);


}


//Case 1
void 1 loop() {

  digitalwrite(22, HIGH)
  digitalwrite(23, LOW)
  digitalwrite(24, LOW)
  digitalwrite(25, HIGH)

  digitalwrite(27, LOW)
  digitalwrite(28, HIGH)
  digitalwrite(29, HIGH)
  digitalwrite(30, LOW)

  digitalwrite(32, HIGH)
  digitalwrite(33, LOW)
  digitalwrite(34, LOW)
  digitalwrite(35, HIGH)


  pwm_value = pulseIn(PWM_PIN, HIGH);
  Serial.println(pwm_value);
  //val = map(pwm_value, 0, 1023, 0, 180);
  val = pwm_value;
  ESC1.write(val);
  ESC2.write(val);


}
//Case 2
void  2 First loop() {

  digitalwrite(22, HIGH)
  digitalwrite(23, LOW)
  digitalwrite(24, LOW)
  digitalwrite(25, HIGH)

  digitalwrite(27, HIGH)
  digitalwrite(28, LOW)
  digitalwrite(29, LOW)
  digitalwrite(30, HIGH)

  digitalwrite(32, LOW)
  digitalwrite(33, HIGH)
  digitalwrite(34, HIGH)
  digitalwrite(35, LOW)

  pwm_value = pulseIn(PWM_PIN, HIGH);
  Serial.println(pwm_value);
  //val = map(pwm_value, 0, 1023, 0, 180);
  val = pwm_value;
  ESC1.write(val);
  ESC2.write(val);


}
//Case 3
void 3 loop() {

  digitalwrite(22, HIGH)
  digitalwrite(23, LOW)
  digitalwrite(24, LOW)
  digitalwrite(25, HIGH)

  digitalwrite(27, HIGH)
  digitalwrite(28, LOW)
  digitalwrite(29, LOW)
  digitalwrite(30, HIGH)

  digitalwrite(32, LOW)
  digitalwrite(33, HIGH)
  digitalwrite(34, HIGH)
  digitalwrite(35, LOW)

  pwm_value = pulseIn(PWM_PIN, HIGH);
  Serial.println(pwm_value);
  //val = map(pwm_value, 0, 1023, 0, 180);
  val = pwm_value;
  ESC1.write(val);
  ESC2.write(val);


}
//Case 4
void 4 loop() {


  digitalwrite(22, LOW)
  digitalwrite(23, HIGH)
  digitalwrite(24, HIGH)
  digitalwrite(25, LOW)

  digitalwrite(27, HIGH)
  digitalwrite(28, LOW)
  digitalwrite(29, LOW)
  digitalwrite(30, HIGH)

  digitalwrite(32, HIGH)
  digitalwrite(33, LOW)
  digitalwrite(34, LOW)
  digitalwrite(35, HIGH)


  pwm_value = pulseIn(PWM_PIN, HIGH);
  Serial.println(pwm_value);
  //val = map(pwm_value, 0, 1023, 0, 180);
  val = pwm_value;
  ESC1.write(val);
  ESC2.write(val);


}
//Case 5
void 5 loop() {

  digitalwrite(22, HIGH)
  digitalwrite(23, LOW)
  digitalwrite(24, LOW)
  digitalwrite(25, HIGH)

  digitalwrite(27, LOW)
  digitalwrite(28, HIGH)
  digitalwrite(29, HIGH)
  digitalwrite(30, LOW)

  digitalwrite(32, HIGH)
  digitalwrite(33, LOW)
  digitalwrite(34, LOW)
  digitalwrite(35, HIGH)

  pwm_value = pulseIn(PWM_PIN, HIGH);
  Serial.println(pwm_value);
  //val = map(pwm_value, 0, 1023, 0, 180);
  val = pwm_value;
  ESC1.write(val);
  ESC2.write(val);


}
//Case 6
void 6 loop() {

  digitalwrite(22, LOW)
  digitalwrite(23, HIGH)
  digitalwrite(24, HIGH)
  digitalwrite(25, LOW)

  digitalwrite(27, HIGH)
  digitalwrite(28, LOW)
  digitalwrite(29, LOW)
  digitalwrite(30, HIGH)

  digitalwrite(32, HIGH)
  digitalwrite(33, LOW)
  digitalwrite(34, LOW)
  digitalwrite(35, HIGH)

  pwm_value = pulseIn(PWM_PIN, HIGH);
  Serial.println(pwm_value);
  //val = map(pwm_value, 0, 1023, 0, 180);
  val = pwm_value;
  ESC1.write(val);
  ESC2.write(val);


}


Что я уже пробовал:

Я сначала подумал что это связано с тем что подпрограмма зацикливается где числа вместо того чтобы начинаться с символа но ошибка была обнаружена на 6 й подпрограмме

2 Ответов

Рейтинг:
2

0x01AA

Назовите свои методы void 1 loop, void 2 loop, ... правильно что-то вроде

void loop1()
void loop2()
etc.
и называй их в своей петле вечно вот так
void loop() {
  do {

    switch (num) {
      case 1:
        loop1();
        break;

      case 2:
        loop2();
        break;
...

Надеюсь, это поможет.


Richard MacCutchan

Совершенно верно, +5.

0x01AA

Большое спасибо

Рейтинг:
0

phil.o

В вашем коде есть несколько ошибок:


  • Является A0 переменная, константа или определение? Если нет, то лучше напиши byte PWM_PIN = 0xA0;
  • while (1 != 2);: Ваш цикл никогда не закончится, так как один никогда не будет равен двум.
  • void 1 loop, void 2 loop и т. д.: Все эти шесть объявлений методов недействительны. Почему бы вам не написать тело тех, кто находится внутри их соответствующих case заявления?


0x01AA

A0 представляет собой стержень, как правило, определенными в pins_arduino.h
while (1!=2) Я думаю, что это нарочно и является петлей навсегда
;)

phil.o

while (FALSE) может быть?

0x01AA

Ууупс :-) Я думаю больше while (TRUE)

phil.o

Ой ^^

HamzaMcBob

Да делать в то время как должно было быть младенцем …
Я не очень уверен в Arduino извините за любые ошибки