bclose

Gestionando las librerías

Instalar y desinstalar librerías en Arduino

Objetivos

.

 

    • Aprender a instalar una librería cualquiera.
    • Conocer cómo se constituye una librería y que ficheros incluye.
    • Comprender los problemas que pueden ocurrir al instalar y esbozar vías de solución.
    • Mostrar como desinstalar una librería, de modo que nos libere espacio
 

Material requerido.

Imagen de Arduino UNO Arduino UNO o equivalente.
Taza de caféUn café cargadito siempre ayuda.

 

Las librerías

 

Hemos visto repetidamente en las sesiones previas, como instalar las librerías necesarias para utilizarlas como intermediarias entre nuestros programas y mucho del hardware que hay corriendo por ahí.

El uso de librerías estándar nos ayudan a manejar ciertos componentes sin necesidad de entrar en el detalle fino (y molesto) de tener que conocer cómo funciona cada una de las señales de ese componente o las características específicas del bus de control con el que se maneja.

Nunca demostraremos suficiente agradecimiento a esas personas anónimas que nos proporcionan estas librerías y que se molestan en tenerlas a punto y sacar actualizaciones de tanto en tanto.

No nos engañemos, Arduino es un procesador muy simpático pero es en las librerías de la comunidad donde está la auténtica potencia del sistema, y es en esa comunidad internacional de voluntarios sin ánimo de lucro, donde radica la fortaleza de nuestro Arduino.

La facilidad con que se puede montar un prototipo en Arduino en cuestión de días, se debe única y exclusivamente a que te puedes abstraer de los detalles de bajo nivel y sin mancharte de grasa, centrarte en la funcionalidad del programa a alto nivel.

Esto unido a la proliferación de componentes de gran tirada y bajo costo, están produciendo una revolución tranquila en todo el mundo tecnológico y la cultura del DIY (Do it Yourself o háztelo tú mismo) promete que cambiará la forma en como trabajamos y la oferta de productos y servicios tecnológicos, de un modo que es imposible de predecir ahora mismo.

Pero también cuantas más librerías instalamos más complicado se hace mantenerlas y ordenarlas, hasta que al fin, inevitablemente tendremos que borrar alguna para poder simplemente ver lo que tenemos instalado en un momento dado.

Por eso, en este capítulo, haremos una recopilación sobre como instalar una librería de nuevo y muy especialmente en cómo hacer para desinstalarla, bien cuando ya no te sea necesaria, o sencillamente porque ya no te caben más.

Una buena parte de las librerías que te descargas de Internet no se instala a la primera, sino que el IDE rehúsa aceptarlas, dejándonos con una particular cara de póker.

Dedicaremos unos comentarios  a ver los problemas típicos, que podéis encontrar a la hora de descargar e instalar estas  librerías y mostraremos algunas posibles soluciones.

 

Instalando una librería

 

Lo primero que tenemos que hacer es descargar la librería en cuestión. A poco que busquéis en Internet encontrareis de donde descargaros una librería concreta si conoces el nombre (Naturalmente la cosa se complica ligeramente si no sabéis que librería queréis).

El procedimiento para instalar una librería es muy sencillo y basta seguir unos pocos pasos para hacerlo con éxito.

Insistimos con los pasos precisos. Elegimos en el menú del IDE:

Arduino,Programa\Importar Librería\Añadir Librería

Menu arduino

Ahora nos pedirá la dirección del fichero descargado en formato xxx.zip.

Seleccionar libreria

Busca y selecciona la librería en cuestión.Cuando la pinchemos se debería instalar. Si no hay ningún problema podemos comprobar que aparece en la lista de librerías instaladas y que podemos pincharla.

Si por cualquier problema, el IDE rehúsa instalar la librería, tendremos que ver porqué y corregirlo. Vamos a ver algunas normas.

Arduino define un sistema simple para formar una librería y define una serie de ficheros que deben ir incluidos, así como los ejemplos que la acompañan y forman un paquete comprimido con ZIP para contener todo el conjunto.

Los ficheros que suele incluir una librería (Que llamaremos Biblos por ejemplo), y que podéis comprobar descomprimiendo aparte cualquiera de las nos hemos descargado, son:

 
  • Un fichero Biblos.h, de headers, donde se suelen definir las constantes , marcar includes que necesitara la librería y en muchas ocasiones las definiciones de las clases de las que depende la librería.
  • Un fichero Biblos.cpp, que es donde suele estar el peso del programa. Incluye normalmente, los métodos o funciones de una clase y las propiedades, así como cualquier función de apoyo que la librería necesite.
  • Un fichero o varios o ninguno, del tipo xxx.c con funciones y programas en C para apoyo
  • Un fichero keywords.txt donde indica una lista de palabras reservadas, léase que define la librería.
  • Un Readme.txt con las indicaciones de uso, el autor o autores y la página web donde se publican las actualizaciones.
  • Un directorio de ejemplos que son los que veremos luego en el IDE.
  • Podéis editar todos estos ficheros y ver su código, pero no hace falta que os diga que no cambies cosas si no estáis seguros de lo que hacéis. Podéis abrirlos desde Arduino con la opción de menú Programa\Añadir fichero, os abrirá una nueva pestaña en el IDE con el fichero formateado
 

Arduino establece que todo esto debe estar comprimido en un único fichero Zip que es capaz de importar con la instrucción Importar Librería.

 
  • Arduino espera que la librería solo incluya letras y números y no ningún carácter especial (Incluidos subrayados y similares). Además espera que el nombre de la librería coincida con el de los ficheros xxx.cpp y.xxx.h
  • Si esto no es así devolverá un error diciendo que nones y te tienes que buscar la vida, revisando que puñetas será lo que no le gusta.
  • En aplicación de las normas anti paletos y para evitar las cosas sencillas, en Arduino existe también la peculiar costumbre de no hacer coincidir el nombre del ZIP con el nombre interior de la librería, consiguiendo así, que el IDE rehusé instalarlo con un mensaje críptico.
  • Cuando esto ocurre no hay más remedio que deszipear el fichero en un directorio, entrar en ese directorio y zipear de nuevo todo con el nombre del fichero xx.cpp, y después pedirle al IDE que instale el nuevo fichero Asegúrate además de que no hay directorios encadenados.
  • Por este motivo, en nuestras sesiones siempre os incluyo una copia de la librería para vuestra descarga, que haya comprobado que se instala sin problemas.
 

Si a pesar de todo, la librería se niega a instalarse podemos hacerlo a la vieja usanza. Cerramos el IDE y copiamos el directorio con los ficheros descritos más arriba directamente al directorio de librerías, que es lo que hace la orden de importarla.

En Windows ese directorio suele estar en  \\Usuario\Documentos\Arduino\ libraries. Dentro de el encontrareis un directorio por cada librería instalada con los ficheros de cabecera y los ejemplos que podemos seleccionar desde el IDE.

En Mac OSX, este directorio se instala por defecto en Documentos/Arduino/libraries.

No tengo por aquí ningún Linux, pero me apunto para buscar su directorio de instalación.

 
  • ¿He dicho ya,  que es muy mala idea juguetear con estos ficheros, si no tenéis muy, pero que muy claro lo que estáis haciendo?
 

Tened en cuenta, también, que hay librerías de primera soportadas por la comunidad y con muchas instalaciones a sus espaldas, de modo que son de confianza y otras que son un ejercicio de buena voluntad y poco tiempo para soportarlas, lo que hace que algunas librerías y ejemplos rehúsen compilar y si pasa esto puede ser un problema de difícil solución.

Siempre recomiendo ser comprensivos con la gente que te regala su trabajo, no es fácil exigirles perfección.

 

Desinstalar una librería

 

El proceso para desinstalar una librería es más sencillo que el de instalarla, porque no es probable que surjan problemas.

Basta con cerrar el IDE Arduino e ir a los directorios donde se instalan las librerías. Ya dijimos que en Windows es en   \\Usuario\Documentos\Arduino\libraries\. SI vais con el explorador de archivos veréis algo como esto:

Estructura de la libreria

Lo que el IDE os muestra en el menú \\Programa\Importar\libreria es una copia de los directorios que aparecen aquí y para desinstalar una librería basta con que borréis el directorio en cuestión.

La próxima vez que arranque el IDE, la librería en cuestión habrá desaparecido.

 
  • Ni que decir tiene, que sería buena idea hacer una copia del directorio con su contenido antes de borrarlo. Un fichero ZIP o RAR con ello parece una buena solución, ya que suelen ocupar poco y así podremos recupera la librería en un futuro.
 
Si usas Mac, las libreris se instalan en Documentos/Arduino/libraries

Situacion de la libreria

Y puedes borrar igualmente la carpeta de la librería correspondiente para librarte de el.

 

Resumen de la sesión

.

 

 

    • Hemos visto, de nuevo, como instalar una librería con el IDE.
    • Hemos descrito que ficheros contiene la librería y la forma de importar un fichero único con el contenido en un Zip.
    • Vimos como instalar una librería sin comprimir, copiándola al directorio correspondiente.
    • Vimos como borrar una librería ed nuestroIDE.
 

 

 

 

(19) Comments

  • Gracias. Solucionado ese problema.
    Ahora otro….
    Quiero controlar 3 potenciometros digitales x9c… Independientes en el mismo proyecto. Como lo haría?
    Porqe creo que no puedo volver a definir otras 3 salidas dos veces más.

  • Hola tengo un problema.
    Quiero utilizar dos librerias en un mismo proyecto (una de leer infrarrojos y otra de un potenciometro digital) . EL problema está en que las dos usan sen mismo pin. Queria editar una para solo cambiar un oin por otro. Como la edito? Con block de notas?
    Gracias.

    • Hola David, puedes editar las librerias y modificar el pin en cuestion, pero normalmente necesitas un poquito de comodidad con C para hacer esto.

      En cuanto a tu pregunta, puedes editar la liberira con el IDE de arduino directamente

    • Alejandro Z

    Buenos dias,
    Mi caso es que compré un modulo de CAN Bus, desde la siguiente dirección: https://www.cooking-hacks.com/documentation/tutorials/can-bus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/
    Dicho dispositivo viene con su propia librería para comunicarse por CAN a traves de SPI (arduinoCAN.h), descargable desde la propia WEB. El problema indiferentemente del uso que pretenda dar al proyecto surge cuando al instalar la librería debidamente aparece el siguiente mensaje de error:
    “La carpeta o el archivo zip no contienen una librería válida”
    He probado de todas las formas posibles que se me han ocurrido y no consigo poder utilizarla. De otro modo me he descargado un total de 4 librerías diferentes de las cuales solo una me dejo instalar pero no es del todo compatible con mi dispositivo. Quería saber si sabe de algún formato en el que deban aparecer las librerías en cuanto a direcctorios o si sabe a qué puede deberse este problema.
    Muchas gracias de antemano
    saludos, Alejandro

    • Hola Alejandro,

      He revisado la libreria que me comentas y efectivamente no permite instalarla en el IDE.
      El problema estriba en que es un zip con dos librerias y no con una sola lista para instalar, pero puedes simplemente deszipear el fichero original y te creara una carpeta con dos nuevos zip y uno de ellos es la libreria canbus que ahora si que podras importar a tu arduino sin problemas ¿Vale? Ya me diras

    • José Antonio

    Buenos días, al final si elegía la librería desde (/programa/incluir librería) el error era que la librería me incluía lo siguiente:

    #include , en cambio tenía que poner #include

    Muchas gracias!

    • José Antonio

    Buenos días,

    Instalé ayer la librería time correctamente, y me funcionó perfectamente, siguiendo este ejemplo http://www.prometec.net/time-arduino/
    Hoy, he ido a probar a hacer algo y me daba error, no me reconocía las funciones y me daba errores de este tipo con todas las funciones.
    exit status 1
    ‘setTime’ was not declared in this scope

    He vuelto a eliminar la librería e reinstalarla y sigue dandome el mismo problema.

    Muchas gracias,

    Saludos

    • Hola Jose Antonio,

      A juzgar por el error que reportas parece que no has declarado el include de la libreria al principio del programa

  • Hola

    Como hago para enviar varios datos de sensores del arduino due a LabVIEW y de igual manera para recibir varios datos del LabVIEW al arduino.

    Hasta el momento tengo este programa.
    https://www.dropbox.com/s/f3o6gcq816rlcg6/Comunicacion.rar?dl=0

    Gracias por la ayuda.

    • Hola vanfly, lamento decirte que hasta la fecha no conozco labview por lo que voy a ser una pobre ayuda

    • Carlos Antonio Lamoth Guilarte

    Necesito saber si existe alguna libreria para crear un puerto JTAG en Arduino UNO

    • Ricardo

    Gracias por estos excelentes posts!

    Definitivamente el cafecito ayuda!

    Saludos

  • Hola de nuevo. Un tutorial interesante sería el cómo crear una librería propia. Pequeña, que por ejemplo contenga dos o cuatro keywords.

    Gracias y saludos.

    Suso.

    • Roberto

    Hola de nuevo. Las librerías que he instalado son dos diferentes con el mismo objetivo.
    Una es “HT1632-master” que controla matices de 16X24 y la otra es la de “HT1632-AVR-master” que también lo hace con matices de 8X32.
    Ambas tiene los *.h y *.cpp con el mismo nombre, pero nada que ver la una con la otra.
    Curiosamente con esta segunda librería que me he descargado en un ZIP, después de ver que no podía compilar los ejemplos me he dado cuenta que los *.h y *.cpp estaban dentro de otra carpeta en el ZIP, Arduino versión 1.0.6 ha cargado la librería y ejemplos sin problemas, pero no me ha funcionado hasta no sacar los .h .cpp de la carpeta.
    Añado que el nombre del fichero *.zip y los de *.h y *cpp son diferente y esta versión 1.0.6 instala sin problemas, es posible que sea una diferencia con la 1.05 ¿???
    Otro tema de las librerías seria conocer o tener información de cada una de las funciones, sobre todo para los novatos como yo que venimos de la electrónica.
    Estaré atento por si en algún momento ampliáis el tema de las matrices, con este driver o alguno parecido.
    Gracias por todo.

    • Hola Roberto,

      Me encantaria dedicar mas tiempo a las matrices de LEDs y tengo pendiente alguna otra sesion con ellas, porque tambien a mi me supo a poco lo que pusimos, pero ya sbaes lo que pasa con el timepo, que siempre estas escaso.
      Respecto a la docuemntacion de las libreris, es sin duda la gran tarea pendiente en el mundo de Arduino y similares y resulta complicado usarlas sin la informacion adecuada.Pero puedes usar el fichero keywords.txt que viene con la libreria normalmente, para ver las palabras clave que define y despues buscando en el cpp o .h revisar las funciones para hacerte una idea(Aunque a veces es complicado)
      Un saludo y hasta pronto

    • Roberto

    Hola, una vez leído este tema de como añadir y quitar una librería me surge una duda sobre este tema, la cual he llevado a la práctica sin tener claro qué consecuencias puede tener.
    Estoy actualmente probando las librerías existentes para controlar una matriz de LED con HT1632, y he instalado 2 diferentes donde la carpeta zip tiene nombres diferentes, pero en el interior cada carpetas tienen su fichero xxx.h y xxx.cpp, y en eso si coincide los nombres.
    En resumen tengo dos ht1632.h y dos ht1632.cpp en carpetas diferentes.
    ¿Puede ser esto un problema?
    Gracias y enhorabuena por esta web de Arduino en castellano

    • Hola Roberto,
      No tienes porque tener tener problemas con lo que me comentas,ya que cada una está en su propio directorio. P
      ero la pinta es de que se trata de la misma librería con dos nombres y tampoco tiene sentido que la tengas duplicada. Lo normal es que elimines una de ellas y listo

Give a Reply

WordPress Anti-Spam by WP-SpamShield