---
# System prepended metadata

title: 1bach TecnoIngeniería

---

# 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

