Я получаю эту ошибку:
В функции ‘void loop ()’: headers_stepper_test: 12: ошибка: ожидается
безусловный идентификатор перед ‘.’ токен ожидал неквалифицированного идентификатора перед ‘.’ знак
в этом коде:
#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);
}
Надеюсь, поможет
Других решений пока нет …