Introdução
A parte “input/output” de “GPIO” significa que você também pode usar os pinos como entradas. As entradas são fundamentais para interagir com o mundo externo, permitindo a leitura de sinais de sensores, botões, interruptores e outros dispositivos.
Nesse artigo vamos ver na prática como interagir com dispositivos externo ao Raspberry Pi Pico utilizando MicroPython.
Leitura de um botão
Montagem da placa
Para esse projeto vamos precisar de:
- 1 x Raspberry Pi Pico
- 1 x Protoboard
- 1 x Led
- 1 x Resistor de 1KΩ
- 1 x botão de pressão (push-button)
- 1 x Cabo micro USB
- Jumpers
Para começar a montagem é importante ter em mãos o mapa de pinos, para saber o nome e a função deles.
Com a placa já montada na protoboard, vamos conectar o push-button. Se ele tiver quatro terminais posicione-o utilizando a divisão central da protoboard como referência, ou seja, dois terminais ficarão à direita da divisão central e os outros dois à esquerda.
Para conectar com a placa vamos usar o pino de número 21, cuja referência no mapa de pinos é GP16 (Figura 1). Essa informação será importante ao prosseguirmos para a parte de programação.
Assim, vamos conectar um terminal do jumper na mesma linha que o push-button e o outro terminal no pino GP16. Com um segundo jumper vamos conectar um terminal na mesma do push-button e o outro terminal no GND da protoboard.
Resistor pull-down e pull-up
Diferente de um LED, um push-button não precisa de um resistor limitador de corrente. Mas, ele ainda precisa de um resistor, chamado de resistor pull-up ou pull-down, que é escolhido de acordo com o funcionamento do seu circuito. Esse resistor está embutido na sua placa e pode ser configurado utilizando MicroPython.
Qual a diferença entre os dois? Um resistor pull-down conecta o pino ao terra, logo, quando o push-button não está pressionado, a entrada será 0. Já um resistor pull-up conecta o pino a 3V3, logo, quando o push-button não está pressionado, a entrada será 1.
Programa para ler push-button
Como no programa para acender o LED, vamos começar com “from machine import Pin”. Para poder ser acessado os pinos da placa.
Após isso, vamos chamar o LED de “led_red”, e definir o pino 15 como saída, pois é nele que o LED está conectado e iremos controlá-lo. Após isso, vamos chamar o push-button de “botao”; definir o pino 16 como entrada, pois é nele que o push-button está conectado, e definir o resistor como pull-up.
Utilizando o while faremos com que o LED receba o estado do botão a cada 100 milissegundos (para manipular o tempo foi preciso inserir a biblioteca utime).
from machine import Pin
import utime
led_red= Pin(15,Pin.OUT) #definindo o pino 15 como saída
botao= Pin(16,Pin.IN,Pin.PULL_UP) #definindo o pino 16 como entrada
while True:
led_red.value(botao.value())
utime.sleep_ms(100)
Após a execução do programa utilizando o Thonny, observamos o seguinte comportamento no projeto:
- Sem pressionar o botão o led fica aceso;
- Ao pressionar o botão LED ficará apagado enquanto eu segurar o botão;
- Ao soltar o botão o led volta a ficar aceso.
Se você não possui os componentes físicos para o projeto, é possível testar o programa utilizando o simulador Wokwi. Abaixo temos a simulação virtual:
Para fazer com que o LED fique apagado e seja aceso somente ao pressionar o botão, você pode fazer uma pequena alteração dentro do loop while. Para isso ocorrer, o estado do LED precisa ser o inverso do estado do botão, isso é feito utilizando o operador “NOT” no programa.
from machine import Pin
import utime
led_red= Pin(15,Pin.OUT) #definindo o pino 15 como saída
botao= Pin(16,Pin.IN,Pin.PULL_UP) #definindo o pino 16 como entrada
while True:
led_red.value(not botao.value())
utime.sleep_ms(100)
Conclusão
Nesse artigo exploramos como configurar e ler os valores de pinos de entrada, através de exemplos práticos, vimos como conectar um push-button ao Raspberry Pi Pico e controlamos um LED com base no estado do botão.
Além disso, pudemos entender a diferença entre os resistores pull-up ou pull-down.






