GPIO | Entendendo as Saídas Digitais da Raspberry Pi Pico

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

Introdução

Agora que conhecemos os conceitos básicos do Python, estamos prontos para trabalhar com periféricos da placa. Vamos utilizar a linguagem para interagir com dispositivos externos, iniciando com a exploração dos pinos de saída da placa.

Ao trabalhar com periféricos, podemos utilizar bibliotecas específicas que fornecem funcionalidades e interfaces para interagir com esses dispositivos. É importante estar ciente das especificações e documentação dos periféricos e das bibliotecas utilizadas, para garantir uma utilização correta e segura.

Além disso, podem ser necessárias configurações adicionais, como a instalação de drivers ou a conexão adequada dos dispositivos à placa.

Materiais necessários

Para esse projeto vamos precisar de:

  • 1 x Raspberry Pi Pico
  • 1 x Protoboard
  • 1 x Resistor de 1KΩ 
  • 1 x Led
  • 1 x Cabo micro USB
  • Jumper

Circuito

Para começar a montagem é importante ter em mãos o mapa de pinos, para saber o nome e a função deles.

Figura 1 – Raspberry Pi Pico pinout.

Com a placa já montada na protoboard, vamos usar o pino de número 20 da placa, cuja referência no mapa de pinos é GP15 (Figura 1). Essa informação será importante ao prosseguirmos para a parte de programação.

O LED possui dois terminais: o ânodo (perna maior) e o cátodo (perna menor). Pegue a perna mais longa do LED e insira na mesma linha que o pino 20 da placa. Em seguida, conecte a perna menor do LED ao final do resistor, que é o terminal mais próximo da faixa de tolerância, o outro terminal do resistor será conectado ao GND.

Como o resistor será ligado para GND, vamos escolher um dos pinos GND da placa para tornar uma linha completa da placa em ground. Assim, escolhemos o pino 18 e com um jumper tornamos toda a “faixa negativa” da protoboard em GND.

Para conectar o resistor ao GND, escolhemos um dos pinos GND da placa e o vamos conectá-lo a uma linha completa da protoboard, tornando essa linha a referência de ground. Nesse caso, escolhemos o pino 18 como nossa conexão GND e utilizando um jumper, vamos conectar toda a “faixa negativa” da protoboard a esse pino.

Na Figura 2 e 3, são mostrados o resultado da montagem.

Figura 2 – Montagem do projeto de acender um led externo: no Fritzing

Figura 3 – Montagem do projeto de acender um led externo na protoboard

Exemplo para acender e apagar LED

No capítulo 3 da documentação oficial temos acesso às bibliotecas que permitem a manipulação dos pinos da placa, como a biblioteca machine que já utilizamos anteriormente. Mas no MicroPython, como no Python, é possível importar apenas parte de uma biblioteca, ao invés de importar a biblioteca inteira. 

No nosso programa para acender o LED, vamos começar com “from machine import Pin”. Isso instrui o MicroPython a importar apenas a função ‘Pin’ da biblioteca ‘machine’, em vez de importar a biblioteca inteira. Dessa forma, teremos acesso apenas à funcionalidade necessária para controlar 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. Agora estamos prontos para acionar o LED no programa, dando valor 1 para acender e valor 0 para apagar, como mostra o programa abaixo.

from machine import Pin

led_red= Pin(15,Pin.OUT)
led_red.value(1) #1 para acender, 0  para apagar

Após a execução do programa utilizando o Thonny, observamos o seguinte comportamento no projeto.

saídas digitais na Raspberry Pi Pico
Figura 4 – a) LED apagado b) LED aceso.

Se você não possui os componentes físicos para o projeto, é possível testar o programa utilizando o simulador Wokwi. O simulador Wokwi oferece uma interface virtual para conectar os pinos, acender o LED e testar a lógica do programa de forma virtual. Abaixo temos a simulação virtual:

Nesse programa precisaremos importar uma nova biblioteca para o MicroPython: a biblioteca ‘utime’. Essa biblioteca lida com tudo relacionado ao tempo, desde medições até a inserção de atrasos em seus programas.

É importante destacar que se você já programou em Python antes, está acostumado a usar a biblioteca ‘time’. A biblioteca ‘utime’ é uma versão projetada para microcontroladores, como o Pico. Se você esquecer e usar ‘import time’, não se preocupe: o MicroPython automaticamente usará a biblioteca ‘utime’ em seu lugar.

No programa que estamos fazendo iremos usar a função sleep da biblioteca utime, que faz com que o programa faça uma pausa pelo número de segundos que você digitou. Originalmente a função está configurada em segundos, então basta escrever 1, 2, n segundos que a pausa será feita; mas é possível utilizar milissegundos por exemplo basta escrever “_ms” ao fim da chamada da função.

from machine import Pin
import utime

led_red= Pin(15,Pin.OUT)

while True:
    led_red.value(1) # acende led
    utime.sleep(1) # por 1 segundo
    led_red.value(0) # apaga led
    utime.sleep_ms(1000) # por 1 segundo

Novamente, se você não possui os componentes físicos para o projeto, basta testar a simulação no Wokwi. 

Outra forma mais alto nível de escrever esse código é utilizando “on” e “off” ou “high” e “low”, ambas formas de acender e apagar o LED.

from machine import Pin
import utime

led_red= Pin(15,Pin.OUT)

while True:
    led_red.on() # acende led
    utime.sleep_ms(500) # por meio segundo
    led_red.off() # apaga led
    utime.sleep_ms(2000) # por 2 segundos
from machine import Pin
import utime

led_red= Pin(15,Pin.OUT)

while True:
    led_red.high() # acende led
    utime.sleep_ms(2000) # por 2 segundos
    led_red.low() # apaga led
    utime.sleep_ms(500) # por meio segundos

Um modo mais otimizado de escrever esse código é utilizando a função toggle que alterna o estado de um pino de saída entre ligado (1) e desligado (0). Por ser da biblioteca machine não é preciso importar mais nada para utilizá-la.

from machine import Pin
import utime

led_red= Pin(15,Pin.OUT)

while True:
    led_red.toggle() # acende e apaga led
    utime.sleep_ms(500) # por meio segundo

Conclusão

Vimos que há diversas formas de manipular pinos em um microcontrolador. A escolha da abordagem dependerá das necessidades específicas do projeto e da preferência do programador.

Além disso, toda a lógica utilizada nos programas mostrados pode ser aplicada a outras portas da placa, basta modificar o número do pino correspondente. Mas, é muito importante consultar o mapa dos pinos da placa para garantir o uso correto dos números de pino e entender suas funcionalidades específicas.

Raspberry Pi Pico com MicroPython

MicroPython: Revisão da Linguagem Python – Parte 2 GPIO | Entendendo as Entradas Digitais da Raspberry Pi Pico
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 Saídas Digitais da Raspberry Pi Pico

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: