3.4. Pinos e periféricos¶
Um pino é o periférico mais simples no MCU: um único fio que liga o chip ao mundo exterior. Toda a interação com hardware real – acionar um LED, ler um interruptor, medir uma tensão, enviar bytes por uma linha série – passa por um ou mais pinos.
3.4.1. Modos de pino¶
Um pino é configurado num dos poucos modos disponíveis antes de fazer algo útil:
Pin.IN– entrada. O pino observa a tensão aplicada a partir do exterior e reporta-a como0(baixo) ou1(alto).Pin.OUT– saída. O pino aciona-se para a tensão de alimentação (1) ou para a massa (0), de modo que os componentes externos vejam essa tensão.Pin.OPEN_DRAIN– saída que só pode puxar a linha para baixo. Para ir a alto, o pino liberta (flutua) e uma resistência de pull-up externa eleva a linha. Usado em barramentos partilhados onde múltiplos dispositivos podem acionar a mesma linha.
As entradas podem, opcionalmente, ativar uma resistência de pull interna que garante um nível definido quando nada externo está a acionar o pino:
Pin.PULL_UP– pull fraco para o rail de alimentação.Pin.PULL_DOWN– pull fraco para a massa.
O construtor aceita id, modo e pull como argumentos posicionais:
from machine import Pin
led = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)
3.4.2. Funções alternativas¶
A maioria dos pinos tem uma função alternativa além do seu papel GPIO. Um único pad físico no chip pode ser:
Uma entrada ou saída digital (
machine.Pin).Uma entrada ADC que mede tensão (
machine.ADC).Uma saída PWM que emite uma onda quadrada (
machine.PWM).A linha TX ou RX de um UART (
machine.UART).
Outros periféricos (barramentos série adicionais, temporizadores, etc.) também reclamam pinos específicos; o designer do chip liga cada bloco de hardware a um conjunto fixo de pads. O ADC faz amostragem apenas nos pinos encaminhados para o seu multiplexador; um UART transmite no único pino ao qual o seu sinal TX está ligado.
Nota
As cams OpenMV etiquetam os pinos do conector externo de P0 a P9 (varia ligeiramente consoante a placa). Qual o pino que tem qual função alternativa depende da placa; consulte a referência rápida da OpenMV Cam para obter a tabela.
3.4.3. Variações de placa¶
Alguns detalhes variam consoante a placa e devem sempre ser verificados na referência rápida em vez de assumidos a partir de outra placa:
Tolerância de tensão. Algumas cams têm pinos I/O tolerantes a 5 V (um sinal de 5 V pode ser aplicado diretamente sem dano); outras operam o seu I/O a 3,3 V ou 1,8 V e requerem um conversor de nível para qualquer sinal acima desse valor. Ligar uma fonte de 5 V a um pino não tolerante pode danificar o chip.
Referência ADC. A tensão que o ADC trata como escala completa depende da alimentação de I/O da placa.
read_u16()devolve sempre0..65535, mas a tensão que65535representa é a referência da placa.Capacidade de corrente. Um pino GPIO pode fornecer ou absorver uma corrente limitada – tipicamente dezenas de miliamperes. Suficiente para um pequeno LED através de uma resistência; insuficiente para um motor, um buzzer ou qualquer carga indutiva. Recorra a um driver externo (transístor, MOSFET, ponte H) para cargas mais pesadas.
A referência rápida da OpenMV Cam fornece os valores exatos por placa.