令牌 Arduino 库之前'.'应为非限定 ID

expected unqualified-id before '.' token arduino library

本文关键字:ID 令牌 Arduino      更新时间:2023-10-16

我得到这个错误:

在函数'void loop()': headers_stepper_test:12:错误:预期'之前的未限定id。'之前的令牌预期为未限定id '。"令牌

#include "StepperMotor.h"
void setup() {
  // put your setup code here, to run once:
StepperMotor(8,9);
}
void loop() {
  // put your main code here, to run repeatedly:

  void StepperMotor.moveDegrees(-180);
  delay(1000);
}
cpp库文件:
#include "Arduino.h"
StepperMotor::StepperMotor(int pin1, int pin2)
{
    dirPin=pin1;
    pinMode(dirPin,OUTPUT);
      stepperPin=pin2;
      pinMode(stepperPin,OUTPUT);
}
void StepperMotor::stepDegrees(bool dir, int steps);
{
 digitalWrite(dirPin,dir);
 delay(50);
 for(int i=0;i<steps;i++){
   digitalWrite(stepperPin, HIGH);
   delayMicroseconds(800);
   digitalWrite(stepperPin, LOW);
   delayMicroseconds(800);
}
void StepperMotor::moveDegrees(int degreeNumber);
{
  if (degrees > 0){
    userAbs = (degreeNumber);
    stepNumber = (userAbs * 200/360);
    step(true,stepNumber);
 }
  if (degrees < 0){
    userAbs = (-1*degreesNumber);
    stepNumber = (userAbs * 200/360);
    step(false,stepNumber);
  }
}

.h头文件

#ifndef StepperMotor_h
#define StepperMotor_h
#include "Arduino.h"
class StepperMotor
{
    public:
            StepperMotor(int pin1, int pin2);
     void moveDegrees(int degreeNumber);
    private:
     void stepDegrees(bool dir, int steps);
         int dirPin;
         int stepPin;
         float userAbs;
         float stepNumber;
};
#endif

当我试图实现我自己的库文件时。我不确定在这种情况下是否需要"void",但同样的错误出现了。是什么导致了这种情况?

让我们回顾一下你的代码:

void loop() {
    // put your main code here, to run repeatedly:
    void StepperMotor.moveDegrees(-180);
    delay(1000);
}

第一件事:不要把void放在对moveDegress()的调用中。

第二:

方法moveDegrees不是静态的,因此,您需要一个类StepperMotor的实例才能调用它:

// note: you can initialize the variable here 
// but I'll  do it in setup
StepperMotor stepperMotorInstance; // your variable
void setup() {
    stepperMotorInstance = StepperMotor(8,9); // option 2: initialize variable in setup
}
void loop() {
    // put your main code here, to run repeatedly:
    stepperMotorInstance.moveDegrees(-180);
    delay(1000);
}

希望有所帮助