• Labs core
  • GPIO

GPIO - Preparatório

Lab 1 - GPIO - Preparatório
Deadline: Antes da próxima aula - 12/2 ou 13/2
💰 30% nota de lab (junto com qualidade de código)

Os laboratórios de embarcados são compostos de duas partes: uma chamada pré-lab, onde praticamos um pouco em um ambiente simulado, e outra chamada prática, onde realmente usamos o microcontrolador e controlamos algo real.

Aqui, iremos aprender sobre os conceitos básicos do microcontrolador.

Leitura prévia

Para realizar este laboratório você deve estudar antes.

Praticando

Exercise

Leia sobre os laboratórios preparatórios:

Entrega 3: Firmware

Acesse o repositório via o link a seguir, clone para a sua máquina e trabalhe nele usando o wokiwi:

Agora execute os exercícios, lembre que você pode consultar os snippets de código dentro de RP2040/GPIO/snippets e enviar o código para o github para validação.

exe1

  • Arquivo: exe1/main.c
  • Teste: Verifica se os dois LEDs mudam de estado.

Código

Faça os dois LEDs do exe1 piscarem ao mesmo tempo! O código fornecido já funciona com o LED vermelho, agora você deve fazer o mesmo com o amarelo. Lembre de manter o vermelho piscando junto!

Funcionalidade esperada

exe2

  • Arquivo: exe2/main.c
  • Teste: Aperta um dos botões e verifica a mensagem no terminal.

Código

  1. botão 1 for apertado imprima na tela: Botao 1
  2. botão 2 for apertado imprima na tela: Botao 2

Lembre de configurar o botão 2 como entrada!

// Usar o printf a seguir:
printf("Botao 1\n");
printf("Botao 2\n");

Funcionalidade esperada

exe3

  • Arquivo: exe3/main.c
  • Teste: Aperta um dos botões e verifica se o LED correspondente muda de valor.

Código

Toda vez que o botão for apertado inverta o estado do LED de cor relativa.

Exemplo: Ambos os leds estão apagados, quando o botão vermelho for apertado, acenda o LED Vermelho. Se o Botão for apertado e solto novamente, apague o LED Vermelho. Faça o mesmo para o Verde!.

Lembre de configurar todos os pinos como Entrada ou Saída.

Funcionalidade esperada

exe4

  • Arquivo: exe4/main.c
  • Teste: Verifica se os LEDs acendem na ordem certa.

Código

Toda vez que o Btn Vermelho for apertado, faca os LEDs acenderem na ordem: Vermelho, Roxo, Azul e Verde. Só acenda um LED por vez!.

Utilize um delay de 300ms entre os estados.

Funcionalidade esperada

!!! exercise "exe5" - Arquivo: exe5/main.c - Teste: Aperta um dos botões e contar apenas uma vez!

Bouncing é um problema encontarado em botões mecânicos, um botão pode ser entendido como um sistema massa mola, que quando apertado
vibra e pelo microcontrolador ser muito rápido, ele interpreta isso como várias apertadas.

#### Código

Imprima via printf quantas vezes o botão foi apertado, implemente um código de **debouncing** que filtra a vibracão do botão.

![](https://raw.githubusercontent.com/OnionIoT/Onion-Docs/master/Omega2/Kit-Guides/img/switch-bouncing.gif)

#### Funcionalidade esperada

![](imgs/lab_gpio_pre_exe5.gif)