Utilizando el entorno Arduino, según tengo entendido, no puede acceder a su propia biblioteca desde otra de sus propias bibliotecas. No hay forma de agregar rutas, por lo que simplemente no hay forma de que el compilador encuentre el código. Eso hace que sea difícil escribir bibliotecas que usan código en otra de sus bibliotecas. Mi investigación web indica que esto ha sido un problema durante años, pero que, a mi entender, no se ha resuelto. Sospecho que hay dificultades en los detalles de la implementación o quizás un deseo de mantener el sistema simple a expensas de la capacidad.
Por supuesto, siempre se puede cortar y pegar el código en cada biblioteca nueva, pero eso es excesivamente subóptimo. También puede escribir una gran biblioteca con todo su código en un par de archivos .h y .cpp. Eso tampoco es muy satisfactorio, pero lo he hecho de vez en cuando.
Sin embargo, existe un problema para usar bibliotecas Arduino estándar en su propia biblioteca que está colocando en el directorio de su cuaderno de bocetos/bibliotecas. Como los bocetos incluyen rutas a las ubicaciones de biblioteca estándar y vinculan el código de biblioteca estándar, puede incluir el archivo de encabezado para la biblioteca estándar de interés en su boceto. Debajo de eso, también en su boceto, incluya su propio archivo de encabezado de biblioteca. La biblioteca estándar estará disponible para su biblioteca y para su boceto.
Puede parecer un truco, pero va en línea con todo el paradigma de procesamiento. Básicamente, un boceto es algo que se utiliza para fusionar todas las piezas de trabajo, por lo que es muy apropiado proporcionar toda la lógica de pegamento en el boceto. – SRM
Esto es "malo". La idea de una biblioteca es resumir la funcionalidad y proporcionar una API concisa para su uso. '#include" lib.h "' debería ser todo lo que se necesita para obtener la biblioteca (suponiendo que esté en la ruta de carga). Exigir al cliente de la biblioteca que conozca el funcionamiento interno de la biblioteca es simplemente erróneo. –
Existe una discusión que dice que el usuario debe incluir todas las bibliotecas a las que se hace referencia en el boceto principal. Sin embargo, incluso hacer esto parece producir múltiples errores de definición para macros o matrices que se definen en el encabezado de biblioteca dependiente y excluir el encabezado en los resultados del archivo fuente dependiente al no poder encontrar esos mismos símbolos. La única forma de satisfacer las dependencias de la biblioteca es incluir todos los encabezados y fuentes en el mismo directorio (o ejecutar todas las declaraciones include y cambiar la ruta a relativa, una gran molestia cuando envuelve una lib de terceros y apenas portátil). –