GPIO | Entendendo as Entradas Digitais da Raspberry Pi Pico

Este post faz parte da série Raspberry Pi Pico com MicroPython

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.

Entradas Digitais da Raspberry Pi Pico

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.

Entradas Digitais da Raspberry Pi Pico
Figura 2 – Montagem do projeto  no Fritzing

Entradas Digitais da Raspberry Pi Pico
Figura 3 – Montagem do projeto com componentes físicos.

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.

Raspberry Pi Pico com MicroPython

GPIO | Entendendo as Saídas Digitais da Raspberry Pi Pico Raspberry Pi Pico: Timer One Shot com MicroPython
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » GPIO | Entendendo as Entradas Digitais da Raspberry Pi Pico

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: