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:

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.