неопределенная ссылка на `Servo::Servo()' в пользовательской библиотеке

Я пытаюсь создать собственную библиотеку, использующую "Sevor.h" функции. Когда я пытаюсь скомпилировать скетч, который импортирует библиотеку, я получаю эту ошибку:

C:\Users\jasotosa\AppData\Local\Temp\ccUFUzrg.ltrans0.ltrans.o: In function `_GLOBAL__sub_I_Front':
C:\Users\jasotosa\Documents\Arduino\libraries\DoorServo/DoorServo.cpp:10: undefined reference to `Servo::Servo()'
C:\Users\jasotosa\Documents\Arduino\libraries\DoorServo/DoorServo.cpp:11: undefined reference to `Servo::Servo()'
collect2.exe: error: ld returned 1 exit status

вот этот скетч:


// Libraries
#include "DoorServo.h";

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

И библиотека:

DoorServo.h


#ifndef DoorServo_H

#define DoorServo_H

// Libraries

#include <Arduino.h>;

#include <Servo.h>;

// Macros

#define Open 0

#define Close 1

/*** global variables ***/


/*** Function declarations ***/

// init 

int initDoor();

// open doors function

int OpenDoors();

// close doors function

int CloseDoors();

#endif

DoorServo.cpp


// Библиотеки

#include <DoorServo.h>;

#include <Servo.h>;

// инициализируем сервоприводы

Servo Front;

Servo Back;

// контакты

int FrontDoor = 13;
int BackDoor = 12;

// переменные

int Doorstate;

int pos;

/*** Open Door Function ***
* Returns state of validation bumpers
*/

int initDoor(){
 
 // устанавливаем пины как выход ШИМ
  
Front.attach(FrontDoor);
 
 Back.attach(BackDoor);

}

int OpenDoors(){
  
  for (pos = 0; pos <= 180; pos += 1) { // переход от 0 градусов к 180 градусам
    
  // с шагом в 1 градус
    
  Front.write(pos);         // сообщаем сервоприводу перейти в позицию в переменной 'pos'
   
  Back.write(pos);
    
  delay(15);                 // ждем 15 мс, пока сервопривод не достигнет позиции
  
}
  
  // проверка буферов проверки
  
  // вернуть Обумпстате
 
  return 0;  

}

/*** Close Door Function ***
* Returns state of validation bumpers
*/

int CloseDoors(){
  
  for (pos = 180; pos >= 0; pos -= 1) { 
  
  Front.write(pos);             
  
  Back.write(pos);
    
  delay(15);                      
  
}

  // проверка буферов проверки
  
  // вернуть CbumpState

  return 0;
}

Что вызывает ошибку?

, 👍1

Обсуждение

вы используете Arduino IDE 1? Если вы используете IDE 2, устанавливали ли вы библиотеку Servo в Менеджере библиотек?, @Juraj


1 ответ


0

Попробуйте создать экземпляры объектов Front и Back, прежде чем пытаться вызывать .attach() или write() для них.

Servo Front = Servo();
Servo Back = Servo();

Кроме того, в коде есть куча ошибок, вам следует удалить операторы return 0;, которые находятся за пределами любого блока кода.

,