-2

我创建了一个类来通过串行端口管理命令并且我正在使用步进电机但是当我尝试使用步进功能时不起作用。我在 arduino 文件中声明了一个对象,并使用步进器对象的指针指向类中的 wotk。对其进行测试,setSpeed 方法工作正常,但是当我尝试使用 step 方法时,我在编译操作时遇到了分段错误。步进电机库工作正常,我已经做了一些测试,电机工作正常,但是当我尝试在带有指针的类中使用它时不起作用。

主文件

    #include "ClassTest.h"

    ClassTest test;

    Stepper myStepper1 = Stepper(200, 8, 9, 10, 11);

    void setup() {
        test.SetupMotor(&myStepper1);  
    }
    void loop() {
        test.MoveMotor('Motor1',200);  
    }

类测试.h

#include "Arduino.h"
#include "Stepper.h"

class ClassTest
{
  public:
    ClassTest();
    void SetupMotor(Stepper* step);
    void MoveMotor(String ,int );
  private:
    Stepper* _myStepper1;
};

类测试.cpp

void ClassTest::SetupMotor(Stepper* step)
{
    _myStepper1=step;
        _myStepper1->setSpeed(200);
}

void ClassTest::MoveMotor(String motor,int stepCount)
{
        // i am getting an issue on compiling time about segmentation fault
    _myStepper1->step(200);

}

我尝试了很多东西,但不确定为什么还不行,有什么帮助吗???谢谢!!

4

1 回答 1

0

我无法重现您的错误。以下代码在 Arduino IDE 中编译:

#include "Arduino.h"
#include "Stepper.h"

class ClassTest
{
  public:
    ClassTest() = default;
    void SetupMotor(Stepper* step);
    void MoveMotor(String, int );
  private:
    Stepper* _myStepper1;
};

void ClassTest::SetupMotor(Stepper* step)
{
  _myStepper1 = step;
  _myStepper1->setSpeed(200);
}

void ClassTest::MoveMotor(String motor, int stepCount)
{
  _myStepper1->step(200);

}

ClassTest test;

Stepper myStepper1 = Stepper(200, 8, 9, 10, 11);

void setup() {
  test.SetupMotor(&myStepper1);
}
void loop() {
  test.MoveMotor("Motor1", 200);
}

于 2019-08-04T23:19:22.113 回答