3.7. Saída GPIO¶
machine.LED abstrai a ligação dos indicadores integrados da câmara. Controlar qualquer componente de hardware externo começa com machine.Pin em modo de saída — o periférico base por detrás de qualquer outra interação GPIO.
3.7.1. Controlar um pino¶
Construa um pino com Pin.OUT para o tornar uma saída e, em seguida, defina o seu valor:
from machine import Pin
led = Pin("P0", Pin.OUT)
led.on() # drive high (about 3.3 V)
led.off() # drive low (about 0 V)
Três formas equivalentes de definir o estado, todas em machine.Pin:
pin.value(1)/pin.value(0)– a forma explícita.
Chamar value() sem argumentos lê o estado atual do pino — o que funciona tanto para entradas como para saídas.
3.7.2. Controlar um LED externo¶
Um LED vermelho a 10 mA a partir de 3,3 V necessita de cerca de 130 Ω em série (a página de eletrónica apresenta os cálculos). Ligue o pino P0 através dessa resistência ao ânodo do LED e o cátodo do LED à massa. Um piscador:
import time
from machine import Pin
led = Pin("P0", Pin.OUT)
while True:
led.on()
time.sleep_ms(500)
led.off()
time.sleep_ms(500)
O LED alterna entre ligado e desligado uma vez por segundo. A corrente no LED (e por conseguinte o seu brilho) é definida pela resistência; o ciclo de trabalho ligado/desligado controla apenas a frequência com que acende, não o brilho durante o período em que está aceso.
Dica
O construtor aceita um valor inicial como argumento de palavra-chave: Pin("P0", Pin.OUT, value=0) configura o pino como saída que começa a nível baixo. Sem ele, o pino assume brevemente o estado predefinido antes da primeira chamada a value().
3.7.3. Modo open-drain¶
O modo predefinido Pin.OUT é push-pull: o pino aciona ativamente tanto o nível alto (para a alimentação) como o nível baixo (para a massa). Por vezes isso não é adequado. Recorra a Pin.OPEN_DRAIN quando o pino deve colocar a linha a nível baixo ou libertá-la (flutuar):
pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off() # actively drive low
pin.on() # release; an external pull-up brings the line high
A principal utilização é a partilha de um fio. Múltiplas saídas open-drain podem partilhar uma única linha porque nenhuma delas aciona ativamente o nível alto. Qualquer uma delas pode colocar a linha a nível baixo; se todas a libertarem, uma resistência de pull-up externa coloca a linha a nível alto. Esta é a convenção de ligação por detrás dos barramentos de comunicação partilhados.
Aviso
O open-drain não é uma solução geral para controlar dispositivos de tensão mais elevada. Ligar um pino open-drain a um pull-up de 5 V é seguro num pino tolerante a 5 V, mas danifica um pino não tolerante através dos seus díodos de proteção internos, assim que o pino é libertado e a linha sobe para 5 V. A sinalização entre tensões diferentes requer um conversor de nível adequado; consulte Conversão de nível lógico para o circuito.