3.4. Pinos e periféricos¶
Um pino é o periférico mais simples do MCU: um único fio que conecta o chip ao mundo externo. Toda interação com hardware real – acionar um LED, ler uma chave, medir uma tensão, enviar bytes por uma linha serial – acaba passando por um ou mais pinos.
3.4.1. Modos de pino¶
Um pino é configurado em um dentre alguns modos antes de fazer algo útil:
Pin.IN– entrada. O pino observa a tensão aplicada a ele a partir de fora e a reporta como0(baixo) ou1(alto).Pin.OUT– saída. O pino se aciona para a tensão de alimentação (1) ou para o terra (0), de modo que componentes externos enxerguem essa tensão.Pin.OPEN_DRAIN– saída que só pode puxar a linha para o nível baixo. Para ir ao nível alto, o pino se libera (fica flutuando) e um resistor de pull-up externo eleva a linha. Usado em barramentos compartilhados onde vários dispositivos podem acionar a mesma linha.
As entradas podem, opcionalmente, habilitar um resistor de pull interno que garante um nível definido quando nada externo está acionando o pino:
Pin.PULL_UP– pull fraco para a linha de alimentação.Pin.PULL_DOWN– pull fraco para o terra.
O construtor recebe id, mode 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 alternadas¶
A maioria dos pinos tem uma função alternada além de seu papel como GPIO. Um único pad físico no chip pode ser:
Uma entrada ou saída digital (
machine.Pin).Uma entrada de ADC que mede tensão (
machine.ADC).Uma saída de PWM que emite uma onda quadrada (
machine.PWM).A linha TX ou RX de uma UART (
machine.UART).
Outros periféricos (outros barramentos seriais, timers e assim por diante) também reivindicam pinos específicos; o projetista do chip conecta cada bloco de hardware a um conjunto fixo de pads. O ADC amostra apenas os pinos roteados para o seu multiplexador; uma UART transmite no único pino ao qual seu sinal TX está conectado.
Nota
As OpenMV cams rotulam os pinos do conector externo de P0 a P9 (varia ligeiramente conforme a placa). Qual pino carrega qual função alternada é específico de cada placa; consulte a referência rápida da OpenMV Cam para a tabela.
3.4.3. Variações entre placas¶
Alguns detalhes variam conforme a placa e devem sempre ser verificados na referência rápida, em vez de presumidos a partir de outra placa:
Tolerância de tensão. Algumas cams têm pinos de E/S tolerantes a 5 V (um sinal de 5 V pode ser aplicado diretamente sem danos); outras operam sua E/S em 3,3 V ou 1,8 V e exigem um conversor de nível para qualquer sinal acima disso. Conectar uma fonte de 5 V a um pino não tolerante pode danificar o chip.
Referência do ADC. A tensão que o ADC trata como fundo de escala depende da alimentação de E/S da placa.
read_u16()sempre retorna0..65535, mas a tensão que65535representa é qualquer que seja a referência da placa.Capacidade de corrente (drive strength). Um pino GPIO pode fornecer ou drenar uma corrente limitada – normalmente dezenas de miliampères. Suficiente para um pequeno LED através de um resistor; insuficiente para um motor, uma cigarra ou qualquer carga indutiva. Recorra a um driver externo (transistor, MOSFET, ponte H) para qualquer coisa mais pesada.
A referência rápida da OpenMV Cam fornece os números exatos por placa.