3.7. Saída GPIO¶
machine.LED abstrai a fiação dos indicadores embutidos da câmera. Acionar qualquer peça de hardware externa começa com machine.Pin em modo de saída – o periférico bruto que está por baixo de toda outra interação GPIO.
3.7.1. Acionando um pino¶
Construa um pino com Pin.OUT para torná-lo uma saída e, em seguida, defina 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 maneiras equivalentes de definir o estado, todas em machine.Pin:
pin.value(1)/pin.value(0)– a forma explícita.
Chamar value() sem argumentos lê de volta o estado atual do pino – o que funciona tanto para entradas quanto para saídas.
3.7.2. Acionando um LED externo¶
Um LED vermelho a 10 mA a partir de 3,3 V precisa de cerca de 130 Ω em série (a página de eletrônica desenvolve as contas). Ligue o pino P0 através desse resistor ao anodo do LED, e o catodo do LED ao terra. Um pisca-pisca:
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 liga e desliga uma vez por segundo. A corrente através do LED (e, portanto, seu brilho) é definida pelo resistor; o ciclo de liga/desliga controla apenas a frequência com que ele acende, não o quão brilhante ele aparece enquanto está aceso.
Dica
O construtor aceita um valor inicial como argumento nomeado: Pin("P0", Pin.OUT, value=0) configura o pino como uma saída que começa em nível baixo. Sem isso, o pino assume brevemente qualquer que seja seu estado padrão antes da primeira chamada a value().
3.7.3. Modo open-drain¶
O modo padrão Pin.OUT é push-pull: o pino aciona ativamente tanto o nível alto (em direção à alimentação) quanto o baixo (em direção ao terra). Às vezes isso não é o desejado. Use Pin.OPEN_DRAIN quando o pino deve ou puxar a linha para o nível baixo ou liberá-la (deixá-la flutuar):
pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off() # actively drive low
pin.on() # release; an external pull-up brings the line high
O uso principal é o compartilhamento de um fio. Várias saídas open-drain podem compartilhar uma única linha porque nenhuma delas a aciona ativamente para o nível alto. Qualquer uma delas pode puxar a linha para o nível baixo; se todas a liberarem, um pull-up externo leva a linha ao nível alto. Essa é a convenção de fiação por trás dos barramentos de comunicação compartilhados.
Aviso
Open-drain não é uma solução geral para acionar um dispositivo de tensão mais alta. Conectar um pino open-drain a um pull-up de 5 V é seguro em um pino tolerante a 5 V, mas danifica um pino não tolerante por meio de seus diodos de proteção internos assim que o pino é liberado e a linha sobe até 5 V. A sinalização entre tensões diferentes exige um conversor de nível adequado; veja Conversão de nível para o circuito.