[AccelStepper] [PlatformIO] [mbed] Запрос на член '' в '', который имеет неклассный тип - PullRequest
0 голосов
/ 01 октября 2019

, поэтому я пытался создать 3 объекта «accelstepper». Это скриншот моего кода на случай, если раздел кода не появится . Кроме того, это скриншот файла "stepper_directory.h"

#include <mbed.h>
#include "stepper_directory.h"

//Include accelstepper library
#include <AccelStepper.h>

//Create accelstepper object for the Z-Axis actuator
AccelStepper zaxis(uint8_t interface = AccelStepper::DRIVER, uint8_t zstep = ZSTEP, uint8_t zdir = ZDIR);

//Create accelstepper object for the theta axis actuator
AccelStepper taxis(uint8_t interface = AccelStepper::DRIVER, uint8_t tstep = TSTEP, uint8_t tdir = TDIR);

//Create accelstepper object for the magnet actuator
AccelStepper maxis(uint8_t interface = AccelStepper::DRIVER, uint8_t mstep = MSTEP, uint8_t mdir = MDIR);

Это заголовочный файл, который я использовал "stepper_directory.h"

#ifndef _STEPPER_DIRECTORY
#define  _STEPPER_DIRECTORY

#include "PinNames.h"

//Pin Definitions
#define ZSTEP   PA_7
#define ZDIR    PA_0

#define TSTEP   PA_8
#define TDIR    PA_1

#define MSTEP   PA_9
#define MDIR    PA_2

Я попытался настроить один шагер в своем основном коде в main.cpp следующим образом:

int main() {
    // put your setup code here, to run once:
    zaxis.setMaxSpeed(188000);

    while(1) {
    // put your main code here, to run repeatedly:
    }
}

Но компилятор platformIO выдает следующие строки:

src\main.cpp: In function 'int main()':
src\main.cpp:17:7: error: request for member 'setMaxSpeed' in 'zaxis', which is of non-class type 'AccelStepper(uint8_t, uint8_t, uint8_t)
{aka AccelStepper(unsigned char, unsigned char, unsigned char)}'
 zaxis.setMaxSpeed(188000);
       ^~~~~~~~~~~
*** [.pio\build\nucleo_f410rb\src\main.o] Error 1

Iпытались найти то, что не так с моими объектами, но безрезультатно. Я был бы очень признателен, если бы кто-то мог объяснить, что с этим не так. Это скриншот рассматриваемой ошибки

1 Ответ

0 голосов
/ 01 октября 2019

Проблема здесь.

//Create accelstepper object for the Z-Axis actuator
AccelStepper zaxis(uint8_t interface = AccelStepper::DRIVER, uint8_t zstep = ZSTEP, uint8_t zdir = ZDIR);

Это объявление функции. Он принимает три аргумента и возвращает AccelStepper. Вы не можете инициализировать экземпляр AccelStepper с этой строкой кода.

Я предполагаю, что конструктор AccelStepper выглядит примерно так:

AccelStepper AccelStepper(uint8_t interface, uint8_t zstep, uint8_t zdir);

Вы можете инициализировать свой экземпляр следующим образом:

AccelStepper zaxis(AccelStepper::DRIVER, ZSTEP, ZDIR);

...