неопределенная ссылка на `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;
}
Что вызывает ошибку?
@Jesus Soto , 👍1
Обсуждение1 ответ
▲ 0
Попробуйте создать экземпляры объектов Front
и Back
, прежде чем пытаться вызывать .attach()
или write()
для них.
Servo Front = Servo();
Servo Back = Servo();
Кроме того, в коде есть куча ошибок, вам следует удалить операторы return 0;
, которые находятся за пределами любого блока кода.
,
@Mohamed Elhariry
Смотрите также:
- Как сгенерировать файлы .a и .so для добавления в проект arduino
- Как использовать библиотеку Modbus RTU функционального кода 6
- Мотор для лебедки (с контроллером и внешним блоком питания)
- myservo' не называет тип
- Библиотека ESP8266: получено 2 запроса вместо 1
- Использование ВСЕХ аналоговых выводов на Mega для Servo
- Проблема с SPI при использовании трансивера RF24 NRF24L01 со светодиодной матрицей MD_MAX72xx
- Как сегментировать программу Arduino, если количество строк настолько велико, что обслуживание кода затруднено?
вы используете Arduino IDE 1? Если вы используете IDE 2, устанавливали ли вы библиотеку Servo в Менеджере библиотек?, @Juraj