Skip to content

Lab 2 - ISR - Prática 70% da nota do lab

1. Classroom

📝 Prática

2. Entrega final

Enviar no PrairieLearn

Nota

70% da nota do laboratório

Neste laboratório, aplicaremos os conceitos de Interrupção de Hardware/GPIO (IRQ). Como desafio, vamos desenvolver um telégrafo digital!

Material

Para isso, você vai precisar de:

Lista de MateriaisValor
2x Botões de pressãoR$ 0,20
1x BuzzerR$ 2,70

O buzzer é um dispositivo piezoelétrico capaz de vibrar quando acionado corretamente (leia mais em Consulta/Buzzer). Com ele, seremos capazes de gerar o tom necessário para simular o telégrafo e reproduzir um código Morse:

Hello World

Note que existem dois tipos de sinal: curto e longo. O desafio deste laboratório será gerar automaticamente esses dois tons.

Requisitos

Seu projeto deve possuir dois botões (btn1 e btn2) e um buzzer. Cada botão deve reproduzir um tom diferente (indicamos freq1 e freq2). O código deve fazer uso de IRQ para a leitura dos botões. O btn1 deve reproduzir freq1 por um determinado tempo, e o btn2 deve reproduzir freq2 por um tempo três vezes maior que o do outro botão. A ideia é que não precisemos contar o tempo na nossa cabeça (curto/longo); o sistema faz isso por nós!

Parâmetrovalor
freq11000 hz
time1100 ms
freq26000 hz
time2300 ms

Resultado esperado:

Dicas

A seguir, algumas dicas de como fazer. Você pode ou não seguir:

  1. Comece pelos botões e suas IRQs
  2. Reproduza um som no buzzer
  3. Crie uma função que recebe uma frequência, tempo e um pino e reproduz um tom.
  4. Implemente a lógica

TIP

Não se esqueça de verificar o code quality! Agora ele vai começar a apitar na cabeça de vocês!

Desafios extras

Gostou e quer fazer mais? Que tal:

  1. Olhando para o futuro... Dê uma olhada no RP2040/Timer e tente usar o periférico do timer para contar tempo!
  2. Entre cada tom deve haver um silêncio. Se o usuário pressionar muito rápido cada botão, insira o silêncio automaticamente.
  3. Adicione dois buzzers e gere um tom composto (cada som é composto por duas notas)
  4. Receba um texto via UART, converta para código morse e transmita!
    • Pode usar comandos básicos de c e leitura de terminal!