Не могу управлять 4 шаговыми двигателями одновременно

Я пытаюсь управлять 4 шаговыми двигателями с помощью библиотеки AccelStepper.

Что - то вроде этого:

AccelStepper FL(1,stepPin,dirPin);
AccelStepper FR(1,stepPin2,dirPin2);
AccelStepper BL(1,stepPin3,dirPin3);
//AccelStepper BR(1,stepPin4,dirPin4);

Проблема в том, что это работает просто отлично, если я объявляю 3 экземпляра ускорителя, но как только я раскомментирую 4-й, появляется ошибка.

Error message: Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Board: "ESP32 Dev Module, Disabled, Default, 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"




In file included from C:\Users\Parit\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1/tools/sdk/include/esp32/xtensa/xtruntime.h:30:0,

                 from C:\Users\Parit\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1/tools/sdk/include/freertos/freertos/portmacro.h:80,

                 from C:\Users\Parit\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1/tools/sdk/include/freertos/freertos/portable.h:94,

                 from C:\Users\Parit\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1/tools/sdk/include/freertos/freertos/FreeRTOS.h:105,

                 from C:\Users\Parit\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1\cores\esp32/Arduino.h:32,

                 from sketch\Test_file.ino.cpp:1:

C:\Users\Parit\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1/tools/sdk/include/esp32/xtensa/config/specreg.h:40:13: error: expected unqualified-id before numeric constant

 #define BR  4

             ^

C:\Users\Parit\Desktop\Test_file\Test_file.ino:31:14: note: in expansion of macro 'BR'

 AccelStepper BR(1,stepPin4,dirPin4);

              ^

Multiple libraries were found for "WiFi.h"

 Used: C:\Users\Parit\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1\libraries\WiFi

 Not used: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi

exit status 1

Error compiling for board ESP32 Dev Module.



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Я не уверен, в чем проблема - в ESP 32 или в коде. Я использую драйвер A4988 для подключения ко всем 4 шаговым двигателям.

, 👍0

Обсуждение

Пожалуйста, покажите полное сообщение об ошибке, @chrisl

Только не в комментариях, пожалуйста. Вы можете добавить эту информацию к своему вопросу, отредактировав его., @chrisl

ок извини сейчас добавлю, @ QiQi


1 ответ


1

Имя переменной BR уже используется где-то в другом месте.

Используйте другое имя переменной

AccelStepper FL(1,stepPin,dirPin);
AccelStepper FR(1,stepPin2,dirPin2);
AccelStepper BL(1,stepPin3,dirPin3);
AccelStepper BackRight(1,stepPin4,dirPin4);
,

Благодарю вас ! Теперь работает. Но это странно, я могу подтвердить, что я не использовал переменную с таким именем где-либо в моем коде/, @ QiQi

Это объясняется в сообщении об ошибке. В нем говорится, что BR определен как константа со значением 4 (#define BR 4), @Gerben

Хорошо, но все же я не написал "#define BR 4" в своем коде. В любом случае, теперь это работает, так что это не имеет значения, спасибо., @ QiQi

Первое определение обязательно в вашем коде — оно может быть в одной из библиотек, включенных в ваш код., @JRobert

Судя по сообщению об ошибке, он находится внутри файла specreg.h. Попробуйте прочитать сообщения об ошибках, которые вы получаете. Они содержат гораздо больше информации, чем вы думаете. Поначалу они могут быть немного ошеломляющими, но после нескольких из них вы почувствуете, что важно и на что следует обращать внимание., @Gerben