Introdução
Os timers de hardware lidam com a temporização de períodos e eventos. Uma das funcionalidades da Raspberry Pi Pico é a capacidade de configurar timers periódicos, que são timers que disparam em intervalos regulares. Esses timers podem ser utilizados para controlar temporizadores precisos em aplicações diversas.
Neste artigo veremos como usar o timer periódico para controlar LEDs na Raspberry Pi Pico usando o MicroPython.
Blink Led com Timer Periódico
Materiais necessários
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
- Jumper
Circuito
E a montagem será a mesma explicada no artigo GPIO | Entradas Digitais, cuja configuração pode ser observada na figura abaixo.
Programa para blink LED com Timer Periódico
Como nos demais programas feitos, vamos começar com from machine import Pin. Para poder ser acessado os pinos da placa. Além disso, vamos adicionar a biblioteca Timer.
É importante enfatizar que o Micropython é case-sensitive, isso significa que se você digitar timer ou pin a biblioteca não será reconhecida, então preste atenção nas letras maiúsculas e minúsculas.
A definição do timer foi feita através da variável temporizador e a sua configuração foi feita setando a frequência em 1Hz, o modo do timer como periódico e chamando a função de callback, nomeada de “tempo”.
A função callback é chamada quando um evento específico ocorre ou quando uma determinada condição é atendida. No programa que estamos construindo “tempo” é a função callback que é chamada a cada intervalo de 1 segundo e no corpo dessa função, tem uma lógica que inverte o estado do pino GPIO15 para controlar o LED.
from machine import Pin, Timer
led_red= Pin(15,Pin.OUT) #definindo o pino 15 como saída
temporizador = Timer() #definindo timer
def tempo (timer): #definindo função callback
global led_red
led_red.toggle()
temporizador.init(freq = 1, mode = Timer.PERIODIC, callback = tempo)
# configurando timer com frequência de 1Hz e no modo periódicoSe 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:
Outra forma de escrever o código é ao invés de usar “freq” (frequência), usar “period” (período). Nesse caso, o período é dado em milissegundos, então para ser equivalente a 1 Hz precisamos substituir por 1000 ms.
from machine import Pin, Timer
led_red= Pin(15,Pin.OUT) #definindo o pino 15 como saída
temporizador = Timer() #definindo timer
def tempo (timer): #definindo função callback
global led_red
led_red.toggle()
temporizador.init(period = 1000, mode = Timer.PERIODIC, callback = tempo)
# configurando timer com frequência de 1Hz e no modo periódicoÉ possível criar diversos timers para controlar componentes diferentes. Assim, vamos criar um novo timer para controlar o LED embutido na placa. O procedimento será o mesmo: setar o timer em uma variável, definir suas configurações e a função callback.
from machine import Pin, Timer
led_red= Pin(15,Pin.OUT) #definindo o pino 15 como saída
led_pico= Pin(25,Pin.OUT) #definindo o led da placa como saída
temporizador1 = Timer()
temporizador2 = Timer() #definindo timers
def tempo1 (timer): #definindo função callback
global led_red
led_red.toggle()
def tempo2 (timer): #definindo função callback
global led_pico
led_pico.toggle()
temporizador1.init(period = 1000, mode = Timer.PERIODIC, callback = tempo1)
temporizador2.init(period = 500, mode = Timer.PERIODIC, callback = tempo2)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:
Com o uso dos timers não precisamos mais ficar presos às rotinas de loop, o que fornece maior eficiência aos projetos.
Conclusão
Nesse artigo exploramos a criação de timers periódicos no Raspberry Pi Pico. Os timers periódicos são ferramentas poderosas para adicionar funcionalidades temporizadas, garantindo maior controle sobre eventos e permitindo a criação de aplicações mais eficientes aos projetos com o Raspberry Pi Pico.






