Cada programa en CircuitPython que ejecutas necesita tener mucha información para operar. La razón por la que CircuitPython es tan sencillo se usar es que la mayoría de la información reside en otros archivos y trabaja en el fondo. Estos archivos se llaman librerías. Algunas están integradas en CircuitPython. Otras están almacenadas en la unidad de disco CIRCUITPY en una carpeta llamada lib. Parte de lo que hace CircuitPython tan asombroso es la habilidad de almacenar código de forma separada al firmware. El almacenar código separado al firmware hace que sea más fácil actualizar tanto el código que escribes como las librerías de las que dependes.
Tu tarjeta puede que ya venga con la carpeta lib, en la base de la unidad de disco. Sino, simplemente crea la carpeta. Cuando instalas CircuitPython por primera vez, una carpeta vacía lib va a ser creada para ti.
Las librerías de CircuitPython trabajan de la misma forma que los módulo del Python regular, así que la documentación de Python es una excelente referencia sobre como funciona todo. En términos de Python, podemos poner nuestros archivos de librería en la carpeta lib porque es parte del path por omisión de Python.
Una desventaja de esta forma de manejar las librerías es que no vienen incluidas. Para utilizarlas uno debe copiarlas a la unidad de disco CIRCUITPY antes de que puedan ser usadas. Por fortuna, nosotros proveemos un agrupado de librerías.
Nuestro agrupado y sus versiones también son versiones optimizadas de las librerías con la extensión de archivo .mpy. Estos archivos requieren menos espacio en la unidad de disco y requieren menos memoria al cargarse.
Nosotros estamos constantemente actualizando y mejorando nuestras librerías, así que no (por ahora) les ponemos el empaquetado de librerías a las tarjetas cuando las enviamos. En cambio, puedes encontrar código ejemplo en las guías para tu tarjeta el cual depende de librerías externas. Algunas de estas librerías van ser ofrecidas por nosotros en Adafruit, ¡y puede que otras sean escritas por miembros de la comunidad!
De cualquier manera, mientras comienzas a explorar CircuitPython, vas a querer aprender como cargarle librerías a la tarjeta.
Ahora descarga la última versión del Agrupado de Librerías de Adafruit para CircuitPython dándole click al botón abajo.
Nota: La versión del agrupado debe ser la versión correcta para la versión de CircuitPython que ejecutas – usas la el agrupado versión 3.x para CircuitPython 3, y usar el agrupado versión 4.x para CircuitPython 4, etc. Si mezclas versiones de librerías y versiones mayores de CircuitPython, lo más probable es que recibas errores debido a cambio en las interfaces hacia las librerías durante los cambios de versión.
Si necesitas otra versión, puedes visitar la página de versiones agrupadas que te va a permitir seleccionar exactamente la versión que andas buscando, así como contiene información sobre cambios.
De cualquier forma, descarga la versión correcta para la versión de firmware de CircuitPython que usas. Si no conoces la versión, mira la información inicial en el REPL de CircuitPython, el cual reporta la versión. Por ejemplo, si estás ejecutando v4.0.1, descarga la versión 4.x del agrupado de librerías. También existe un agrupado de py, el cual contiene los archivos de python sin compresión, lo cuales probablemente no quieres a menos que estés realizando un trabajo avanzado sobre las librerías.
Luego de descargar el archivo zip, extrae sus contenidos. Esto se hace usualmente dándole doble click al archivo zip. En Mac OSX, el archivo termina en la misma carpeta que el archivo zip.
Abre la carpeta del empaquetado. Dentro vas a encontrar dos archivos informativos, dos carpetas. Una es la carpeta lib con el agrupado, y la otra es una carpeta con ejemplos para las librerías del agrupado.
Ahora abre la carpeta lib. Cuando abres la carpeta, vas a ver una gran cantidad de archivos mpy y carpetas.
Archivos Ejemplo
Todos los archivos de ejemplo de cada librería ahora se incluyen en el agrupado, así como también existe un agrupado con solo ejemplos. Estos se incluyen por dos razones:
- Permiten pruebas rápidas sobre dispositivos.
- Proveen un ejemplo para basar el código, el cual se construye fácilmente sobre la base hacia propósitos particulares.
Copiando librerías a tu tarjeta
Primero vas a querer crear la carpeta lib en la unidad de disco CIRCUITPY. Abre la unidad de disco, das click derecho y buscas la opción para crear una carpeta, nombrándola lib. Ahora, abre la carpeta lib que has extraído del archivo zip descargado. Dentro vas a encontrar una cantidad de carpetas y archivos .mpy. Encuentra la librería que deseas utilizar y realiza la copia a la carpeta lib de la unidad de disco CIRCUITPY.
Esto también aplica para los archivos de ejemplo. Se proveen solo como archivos crudos .py, por lo cual es posible que sea necesario convertirlos a .mpy usando la herramienta mpy-cross, si encuentras errores de MemoryErrors
. Esto ha sido contemplado en la Guía de Esenciales para CircuitPython. El uso es el mismo descrito arriba en la sección de las tarjetas Express. Nota: Si no colocas los ejemplos en una carpeta separada, deberías remover los ejemplos de los import
.
Si decides descargas las librerías mientras las necesitas, es posible que quieras escribir código que trate de utilizar una librería que aún no has cargado. Vamos a demostrar que sucede cuando tratas de utilizar una librería que no has carga a tu tarjeta, y revisar los pasos necesarios para resolver el problema
Esta demostración solo va a devolver un error si no tienes la librería requerida instalada en la carpeta lib de la unidad de disco CIRCUITPY.
Vamos a modificar la versión del ejemplo que parpadea.
import board import time import simpleio led = simpleio.DigitalOut(board.D13) while True: led.value = True time.sleep(0.5) led.value = False time.sleep(0.5)
Salve este archivo. Nada sucede con la tarjeta. Vamos a revisar la consola serial para ver que está pasando.
Tenemos un ImportError
. Dice que no tenemos un módulo de nombre ‘simpleio’, o no module named 'simpleio'
. ¡Este es el que acabamos de agregar en nuestro código!
Haga click en el enlace arriba para descargar el agrupado correcto. Extrae la carpeta lib del archivo descargado con el agrupado. Baja hasta ver el simpleio.mpy. ¡Este es el archivo de librería que andamos buscando! Sigue los pasos descritos arriba para cargar un archivo de librería de forma individual.
¡Ahora el LED comienza a parpadear de nuevo! Vamos a revisar la consola serial.
¡Sin errores! Excelente. ¡Has resuelto correctamente un error de ImportError
!
Si te topas con este error en el futuro, sigue los pasos descritos arriba y escoja la librería que te hace falta.
Si tienes una Trinket M0 o una Gemma M0, vas a querer seguir los mismos pasos en el ejemplo anterior para instalar librerías mientras van haciendo falta. No siempre debes esperar a recibir el error ImportError
dado que probablemente sabes que librería vas a necesitar ya que sabes que librería has agregado a tu código. Simplemente abre la carpeta lib que descargaste, escoge la librería que necesitas y arrástrala a la carpeta lib de tu unidad de disco CIRCUITPY.
Es posible que te quedes sin espacio en tu Trinket M0 o Gemma M0 incluso si vas copiando las librerías mientras las necesitas. Hay una serie de pasos que se pueden realizar para resolver este problema. Las vas a encontrar en la página de Depuración de la Guía de Aprendizaje para tu tarjeta.
Las librerías y sus ejemplos se actualizan de forma constante, y es importante actualizar los archivos que tienes en tu unidad de disco CIRCUITPY.
Para actualizar las librerías de forma individual, sigue los mismos pasos descritos arriba. Cuando arrastras un archivo de librería a tu carpeta lib, te va a preguntar si la deseas reemplazar. Dile que sí. ¡Eso es todo!
Una nueva versión del agrupado de librerías es liberado cuando existe una actualización a una librería. Las actualizaciones incluyen cosas como arreglos a pulgas y nuevas características. Es importante revisar de vez en cuando para ver si las librerías que utilizas han sido actualizadas.
Page last edited March 08, 2024
Text editor powered by tinymce.