# 1bach TecnoIngeniería ## Extensiones del Home en Tecnolinux Pegar este código en CUSTOM/profile.sh de tu PenDrive Personalizado ```bash ################ # Extensiones del home montaExtensionRW(){ # monta extensión en modo RW pero no de forma persistente EXTENSION=$1 MNT=$2 EXTDIR=/tmp/Extensions #EXTDIR=/var/Extensions SHORT=$(basename "${EXTENSION}" ".homeExtension") RO=${EXTDIR}/RO_${SHORT}; mkdir -pv $RO RW=${EXTDIR}/RW_${SHORT}; mkdir -pv $RW # el nombre sustituye dot y slash C="${SHORT//slash/\/}" C="${C//dot/.}" MNT=$MNT/$C; mkdir -pv $MNT echo "montando EXTENSION: $EXTENSION SHORT: $SHORT" echo "RW: $RW RO: $RO " echo "MNT: $MNT" if ! grep $RO /etc/mtab; then echo "montando squashfs RW" sudo mount -o loop $EXTENSION $RO unionfs-fuse -o allow_other,cow ${RW}=RW:${RO}=RO $MNT fi } ## monta extensiones del home if [ -d "${CUSTOM}/Extensions" ]; then EXTENSIONS=$(find $CUSTOM/Extensions/ -type f -name *.homeExtension) for EXTENSION in $EXTENSIONS ; do montaExtensionRW "$EXTENSION" $HOME done fi ``` ## Creando una extensión para Mu Editor De esta forma se acelera considerablemente el inicio de la aplicación y guarda nuestras configuraciones 1. Arrancar Mu Editor y ajustar la configuración deseada 2. Estando en el pendrive Custom, copiar el siguiente código en un terminal: ```bash EXT=/home/me/CUSTOM/Extensions; mkdir -pv $EXT cd / mksquashfs /home/me/.local/share/mu $EXT/dotlocalslashshareslashmu.homeExtension ``` ---- # P03 Digital Output: Intermitente Configurar un intermitente, un LED que se encienda y apague ## Instrucciones Generales 1. Dibuja diagrama de flujo para razonar 2. Dibuja diagrama de conexionado 3. Realiza el montaje del hardware 4. A partir del diagrama de flujo, elabora el código 5. Recuerda que el código ha de sobre-escribir `code.py` en la unidad CIRCUITPY, y que se lanzará cada vez que se salve. Recuerda guardar el codigo anterior en tu PenDrive para entregarlo. 6. Realiza alguna foto y o video del sistema funcionando 7. Incorpora todos los documentos en una memoria. Puedes usar obsidian para tener todo enlazado y de ahí exportar la memoria para entregar ## Enlaces de Interés - [Ejemplo adafruit digitalio](https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/CircuitPython_Essentials/CircuitPython_Digital_In_Out/code.py) - [Docs circuitPython digitalio](https://docs.circuitpython.org/en/latest/shared-bindings/digitalio/index.html) - [Ejemplo NeoPixel](https://www.youtube.com/watch?v=LSH2gFnl2nw) - https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-libraries - ![](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/_images/ESP32-S3_DevKitC-1_pinlayout_v1.1.jpg) - [Info librería digitalio](https://docs.circuitpython.org/en/latest/shared-bindings/digitalio/index.html) ## Solución ### Diagrama de Flujo ![](https://i.imgur.com/MygwSpS.png) Diagramas disponibles [aquí](https://excalidraw.com/#json=kQ4Y0GcZYnASGyAYqMYIl,8uufXdSNHO2xSEGUZExJMw) ```python import board print(dir(board)) #muestra las propiedades (pines) de la tarjeta from digitalio import DigitalInOut, Direction, DriveMode import time print("Encendiendo un LED intermitentemente") print("Jesús L. Alvaro 10 de mayo de 2023") # SETUP LED= DigitalInOut(board.IO4) # define LED como el pin IO4 LED.direction = Direction.OUTPUT #Configura pin como salida LED.drive_mode = DriveMode.PUSH_PULL #Ambos valores # MAIN LOOP while True: LED.value = True # enciende LED print("ON") # escribe en la consola ON como comprobación time.sleep(1.3) # espera un tiempo LED.value = False # apaga el LED print("OFF") # nuevamente escribe en consola time.sleep(1.3 ) # espera, de nuevo ``` ---- # P04 Digital Input Cómo detectar el Digital Input a través del Touch - Encender el LED sólo cuando detecte el Touch en otra entrada, pej `IO6` Las entradas y salidas de propósito general (GPIO) pueden configurarse como sensores de touch o proximidad. Para usar el modo TOUCH de cada pin debemos: 1. Importar la librería touchio 2. Definir la entrada touch correspondiente `touchio.TouchIn(board.IO6)` 3. Leer el valor de la entrada usando la propiedad `.value` [Un ejemplo de uso](https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/f948c681b2d65773492cf4dbc072a447da025aca/Introducing_CircuitPlaygroundExpress/CircuitPlaygroundExpress_CapTouch/code.py) Antes de escribir el código, recuerda dibujar el diagrama de flujo para razonar ## Ampliación usa una pista de grafito dibujada con con un lápiz sobre papel, para comprobar la sensibilidad del sensor. Usa esta idea para imaginar cómo podrías usar esta prestación ![](https://i.imgur.com/0Us0n4d.png) ---- # P05 Touch con estado Usa una variable de estado para que cada vez que se toque, cambie el LED de encendido a apagado y viceversa ---- # P06 Zumbador Piezo-eléctrico Modifica la práctica anterior para activar un zumbador, a la vez que se enciende el LED, al tocar la entrada , y sólo mientras se está tocando - [Inspiración](https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/eaca43ce6f204731481618fa17c1424ebd6f9892/Annoy_O_Matic/code.py) --- # P07 Auto S.O.S Morse Programa la tarjeta para que emita una señal SOS en Morse de forma continuada cada 10 segundos https://circuitpython.org/libraries