/22a-emb-aps1-embananados

22a-emb-aps1-embananados created by GitHub Classroom

Primary LanguageC

21a-emb-aps1

Embarcados - APS 1 - Musical!

Para maiores informações acesse:

https://insper.github.io/ComputacaoEmbarcada/APS-1-Musical/

Issues serão abertos neste repositório para guiar o desenvolvimento da dupla. Vocês não devem fechar os issues, apenas a equipe de professores!, porém devem referenciar nos commits quando um issue foi concluído! Isso gerará um PR no classroom que será avaliado pela equipe.

Autores do Projeto ✒️:

💁‍♂️ Bernardo Cunha Capoferri.

💁‍♀️ Lívia Sayuri Makuta.

Linguagem utilizada 🖥️:

    ✔️ C.

Ferramental utilizado:wrench::

    ✔️ Um microcontrolador SAME70 da Microchip;

    ✔️ A placa de extensão OLED1 Xplained Pro;

    ✔️ Piezo Buzzer;

    ✔️ Jumpers fêmea-fêmea.

Documentação 📑:

Função PINO (ex: PA11)
BUZZER PD30 e GND
START/ PAUSE BUT1 (PD28)
SELEÇÃO BUT2 (PC31)

Imagem da montagem 📸:

foto_montagem

foto_montagem2

❗ ❗ O jumper laranja faz ligação com o pino energizado e o jumper preto faz ligação com o GND.

Como pode ser visto, a parte positiva do Buzzer foi conectada no pino PD30, enquanto a outra parte foi conectada no pino do GND (Ground) - que fica acima do pino PD30, porém no primeiro nível de pinos.

Assim, basta utilizar dois jumpers fêmea-fêmea e conectar as saídas dos pinos no polo positivo e negativo do buzzer. Feito isso, basta rodar o código que o programa estará funcionando.

Vídeo do projeto 🎞️:

APS1 de Embarcados

    ✔️ Para utilizar o projeto, após rodar o programa, basta apertar o botão 1 para tocar e, uma vez que estiver tocando, basta apertá-lo outra vez para pausar.

    ✔️ Para trocar de música, basta apertar o botão 2, e conforme as músicas mudam, os LED's 1,2 e 3 indicarão visualmente qual música está sendo selecionada:

          ◽ A música 1 (Star Wars theme) acende o LED 1.

          ◽ A música 2 (Nokia Ringtone) acende o LED 2.

          ◽ A música 3 (Badinerie) acende o LED 3.

    ✔️ E conforma as músicas tocam, o LED da placa irá piscar de acordo com as notas da música.

    ✔️ Por fim, no LCD estarão indicados o nome da música que está sendo tocada e a barra de progresso que mostra a duração de cada música.

Como o software foi estruturado 📁:

O software foi estruturado em sete arquivos: notas.h, badinerie.h, nokia.h, starwars.h, aps1.h, aps1.c e main.c.

    ✔️ No arquivo notas.h foram definidas as notas e os arrays de cada conjunto de notas foram definidos nos aquivos badinerie.h, nokia.h e starwars.h, que contém as melodias.

    ✔️ Já no aps1.h foram definidos todos os botões, LED's e o buzzer utilizado para conseguir utilizar os pinos e botões configurados. Além disso, nesse mesmo arquivo, outros #defines foram feitos para as constantes usadas, protótipos das funções usadas no trabalho foram definidos e a struct das músicas também.

    ✔️ No aps1.c por sua vez, as funções declaradas no aps1.h foram escritas, ou seja, todas as funções utilizadas no trabalho estão lá. Desde os callsbacks's e funções que inicializam os LED's e botões, até as funções para tocar e pausar as músicas.

    ✔️ Por fim, no arquivo main.c estão os vetores de structs (ponteiros) das músicas e a função principal main() que irá rodar todas as outras funções que foram definidas no aps1.c para o funcionamento do projeto.

Músicas e Direitos autorais 🎼:

As músicas utilizadas na APS são:

    ✔️ Star Wars Main Theme

    ✔️ Nokia Ringtone

    ✔️ Badinerie - Bach

Todas as músicas foram retiradas do repositório que pode ser encontrado no link a seguir: https://github.com/robsoncouto/arduino-songs/ . Além disso, a função play_music que se encontra na aps1.c foi adaptada desse mesmo repositório citado anteriormente.

Checagem dos conceitos feitos:

C

  • Repositório contém README.mdcom ligações elétrica e passos de como usar o projeto, assim como link para o vídeo e referência a outros códigos
  • Funcionalidade de PAUSE/ PLAY
  • Botão de seleção musical
  • Indicação visual de qual música foi selecionada
  • Reproduz duas músicas (de forma inteligível)
  • Utiliza músicas do repositório indicado
  • Fecha todos os issues que forem abertos pela equipe

C +

  • LED piscando de acordo com a música (adicionar um LED ao projeto)

B

  • Música separadas em arquivos .h
  • Utiliza struct para organizar as músicas
  • Código organizado em funções e que recebem struct contendo música
  • Exibir o nome da música no OLED
  • Fecha todos os issues que forem abertos após a entrega (ainda não foram abertos esses issues)

B +

  • README.md explica como o software foi estruturado
  • Faz uso de #define sempre que possível
  • Terceira música
  • Exibir uma barra com a indicação do progresso da música

A

  • Utiliza interrupção nos botões
  • Cria um arquivo .c .h com as funções de reprodução musical

A +

  • Músicas organizadas em vetores de structs (ponteiros)