3.4. Pines y periféricos

Un pin es el periférico más simple del MCU: un único cable que conecta el chip con el mundo exterior. Toda interacción con hardware real – encender un LED, leer un interruptor, medir una tensión, enviar bytes por una línea serie – pasa en última instancia por uno o más pines.

3.4.1. Modos de los pines

Un pin se configura en uno de unos pocos modos antes de hacer algo útil:

  • Pin.IN – entrada. El pin observa la tensión que se le aplica desde el exterior y la reporta como 0 (bajo) o 1 (alto).

  • Pin.OUT – salida. El pin se impulsa a sí mismo hacia la tensión de alimentación (1) o hacia masa (0), de modo que los componentes externos vean esa tensión.

  • Pin.OPEN_DRAIN – salida que solo puede tirar la línea hacia abajo. Para ponerse en alto, el pin se libera (queda flotante) y una resistencia de pull-up externa eleva la línea. Se usa en buses compartidos donde varios dispositivos pueden impulsar la misma línea.

Las entradas pueden habilitar opcionalmente una resistencia de pull interna que garantiza un nivel definido cuando nada externo está impulsando el pin:

El constructor toma id, mode y pull como argumentos posicionales:

from machine import Pin

led    = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)

3.4.2. Funciones alternativas

La mayoría de los pines tienen una función alternativa además de su rol GPIO. Un único pad físico del chip puede ser:

Otros periféricos (más buses serie, temporizadores, etc.) también reclaman pines específicos; el diseñador del chip conecta cada bloque de hardware a un conjunto fijo de pads. El ADC muestrea solo los pines enrutados a su multiplexor; un UART transmite por el único pin al que está cableada su señal TX.

Nota

Las cámaras OpenMV etiquetan los pines del conector externo de P0 a P9 (varía ligeramente según la placa). Qué pin lleva cada función alternativa depende de la placa; consulta la referencia rápida de la OpenMV Cam para ver la tabla.

3.4.3. Variaciones según la placa

Algunos detalles varían según la placa y deben comprobarse siempre en la referencia rápida en lugar de asumirse a partir de otra placa:

  • Tolerancia de tensión. Algunas cámaras tienen pines de E/S tolerantes a 5 V (se les puede aplicar directamente una señal de 5 V sin daño); otras operan su E/S a 3,3 V o 1,8 V y requieren un adaptador de niveles para cualquier señal por encima de eso. Conectar una fuente de 5 V a un pin no tolerante puede dañar el chip.

  • Referencia del ADC. La tensión que el ADC considera como fondo de escala depende de la alimentación de E/S de la placa. read_u16() siempre devuelve 0..65535, pero la tensión que representa 65535 es la que sea la referencia de la placa.

  • Capacidad de corriente. Un pin GPIO puede entregar o absorber una corriente limitada – normalmente decenas de miliamperios. Suficiente para un LED pequeño a través de una resistencia; no suficiente para un motor, un zumbador o cualquier carga inductiva. Recurre a un controlador externo (transistor, MOSFET, puente en H) para cualquier cosa más pesada.

La referencia rápida de la OpenMV Cam proporciona las cifras exactas para cada placa.