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 como0(bajo) o1(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:
Pin.PULL_UP– pull débil hacia el carril de alimentación.Pin.PULL_DOWN– pull débil hacia masa.
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:
Una entrada o salida digital (
machine.Pin).Una entrada de ADC que mide tensión (
machine.ADC).Una salida PWM que emite una onda cuadrada (
machine.PWM).La línea TX o RX de un UART (
machine.UART).
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 devuelve0..65535, pero la tensión que representa65535es 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.