Relatório Técnico Xilofone sintético didático

Propaganda
Universidade Tecnológica Federal do Paraná – UTFPR
Departamento Acadêmico de Eletrônica – DAELN
Departamento Acadêmico de Informática – DAINF
Engenharia de Computação
Oficina de Integração 3 (IF66J) – S71 – 2015/2
Relatório Técnico
Xilofone sintético didático
André Eleutério – [email protected]
Christiano Oishi de Carvalho – [email protected]
Claudio Toledo Filho – [email protected]
Dezembro de 2015
Resumo
É normal que um número grande de pessoas tenha dificuldade para ingressar no mundo da música, devido à alta complexidade de aprendizado
dos instrumentos musicais. Neste trabalho, apresenta-se um xilofone sintético com função didática, que ensina determinadas músicas através de
elementos visuais. Foi desenvolvido um sistema que permite o usuário
ter um primeiro contato com a música. O xilofone construído utiliza sensores piezoelétricos para detectar a interação com as teclas e LEDs como
referência visual. Optou-se pela construção da estrutura em madeira, com
teclas de acrílico e um alto-falante acoplado. Além disso, foram adicionados um controle de volume e uma chave que aciona uma distorção musical. Para que o usuário tenha uma maior interatividade com o xilofone,
uma conexão Bluetooth com um dispositivo móvel foi utilizada. O próprio usuário poderá selecionar as músicas, gravar o que está sendo tocado
e compartilhar com os amigos novas músicas criadas por ele.
1 Introdução
O xilofone projetado pela equipe Ultron é um equipamento muito útil para o
aprendizado musical. Sua estrutura em madeira e acrílico o torna portátil e atrativo visualmente. Através do acionamento de LEDs é possível aprender e tocar
qualquer música que tenha sido enviada via Bluetooth de um aparelho celular.
Como o xilofone se trata de um instrumento de percussão, foram escolhidos
os sensores piezoelétricos, por transformarem energia da vibração em um sinal
elétrico [HOL02]. Para tornar o aprendizado mais intuitivo, diferentes cores de
LEDs foram inseridos nas teclas feitas de acrílico. A comunicação via Bluetooth permite ao xilofone se comunicar com qualquer celular que tenha suporte à
essa tecnologia e ao aplicativo instalado. Alimentando todo o sistema com uma
bateria de 5V, pode-se tocar o xilofone em qualquer lugar. O diagrama da Figura
1 apresenta a visão geral do xilofone didático desenvolvido, denominado Ultron.
1
Relatório Técnico: Ultron
Figura 1: Diagrama com a visão geral do xilofone
2
Relatório Técnico: Ultron
3
1.1 Requisitos
1.1.1 Requisitos Funcionais
Tocar em um alto-falante o som correspondente à tecla tocada
do xilofone
Reproduzir uma determinada música enviada pela estação
base usando o acendimento de LEDs
Gravar o que foi tocado na estação base
Compartilhar a música tocada para que os amigos do usuário
possam aprender a tocar a música gravada
Selecionar no aplicativo a dificuldade da música (fácil ou difícil)
Atribuição de uma nota de acordo com os acertos do usuário
Acendimento dos LEDs da tecla quando ela for tocada
Variação da intensidade dos LEDs de acordo com a intensidade
do toque
Variar a intensidade dos LEDs da tecla dependendo do tempo
de espera para ela ser tocada (quando estiver na forma de
aprendizagem)
Reproduzir som no formato WAVE
Ter uma chave que aplica distorção
Comprido
Comprido
Comprido
Comprido
Comprido
Comprido
Comprido
Contornado
Contornado
Não comprido
Não comprido
Tabela 1: Requisitos funcionais do sistema
1.1.2 Requisitos Não Funcionais
Captura da vibração das teclas usando o sensor piezoelétrico
Comunicação entre a estação base e o sistema embarcado utilizando a tecnologia Bluetooth.
Gravar arquivos texto no Android.
Banco de dados online
Comunicação entre banco de dados online e Android via Internet
Tabela 2: Requisitos não funcionais do sistema
Comprido
Comprido
Comprido
Comprido
Comprido
Relatório Técnico: Ultron
4
2 Principais materiais e recursos utilizados
2.1 Arduino
O Arduino é o que chamamos de plataforma de computação física ou embarcada. O seu hardware é um projeto simples de hardware livre para o controlador, possuindo um processador Atmel AVR e suporte de entrada/saída embutido
[MCR11] . O seu software utiliza uma linguagem de programação padrão, baseada na linguagem C.
O modelo utilizado no projeto é o Arduino Mega 2560, com as especificações:
Microcontrolador
Tensão de operação
Tensão de entrada
Portas digitais
Portas PWM
Portas analógicas
Memória
Clock
Atmega2560
5V
7-12V
54
15
16
Flash de 256Kb
16MHz
Tabela 3: Especificação Arduino Mega 2560
2.2 Android
O Android é um sistema operacional baseado em Linux e desenvolvido pela empresa Google. A sua interface com o usuário é baseada na manipulação direta,
sendo desenvolvido para dispositivos móveis com tela sensível ao toque.
O código do sistema é disponibilizado pelo Google sob licença de código
aberto. O desenvolvimento da aplicação é primeiramente em linguagem Java,
usando o ambiente de desenvolvimento do software Android (SDK) [AND], que
inclui um depurador, uma biblioteca, um emulador, documentação, códigos
exemplos e tutoriais, o que facilita o desenvolvimento.
2.3 Sensores Piezoelétricos
A captação dos toques nas teclas foi feita através dos sensores piezoelétricos. Os
sensores piezoelétricos têm a capacidade converter a força exercida sobre ele
por compressão, impacto, ou vibração em um sinal elétrico cujo a amplitude
depende da intensidade da força aplicada [PIN].
O sensor piezoelétrico gera níveis de tensão variados de acordo com a força
da batida. Fazendo medições experimentais, obtivemos níveis de tensão de
aproximadamente 1,5V para uma batida leve e até 12V para batidas mais fortes. Quando a batida é realizada o sensor gera picos de tensão relativamente
Relatório Técnico: Ultron
5
altos para a necessidade da aplicação. Como experimentalmente obtivemos resultados satisfatórios, não fizemos o acondicinamento do sinal.
Para leitura do sinal elétrico proporcionado pelo sensor, cada um deles foi
colocado em paralelo com um resistor de 1 M Ω e, em seguida ligado a uma
entrada analógica do Arduino [ARDb]. Na programação bastou utilizar a função "analogRead()"do Arduino que retorna um valor inteiro de 0 a 1023 dependendo da intensidade do sinal.
2.4 Comunicação Bluetooth
Toda a comunicação feita entre o Xilofone Sintético e o Aplicativo de gerenciamento foi feita através do Bluetooth.
O Bluetooth é um padrão global de comunicação sem fio e de baixo consumo de energia que permite a transmissão de dados entre dispositivos, desde
que um esteja próximo do outro. Para o Arduino operar com a comunicação, foi
utilizado um módulo que faz todo o gerenciamento Bluetooth que em seguida
se comunica de forma serial com o Arduino.
A ligação foi feita conforme descrita nas pinagens do módulo e, apenas foi
identificado no código quais eram os pinos responsáveis pela comunicação serial, através da biblioteca "SoftwareSerial.h"[PAG].
A plataforma Android possui uma API própria para controlar toda a comunicação Bluetooth. Com os exemplos disponibilizados em [ARDa], uma classe
foi elaborada implementando todas as funções básicas da comunicação: procura de dispositivos, conexão com dispositivo, envio de dados e recebimentos
de dados.
3 Xilofone sintético
3.1 Estrutura
O xilofone sintético desenvolvido é composto por 7 teclas e, abaixo de cada uma,
há um sensor que capta a vibração que ocorre quando a tecla sofre um impacto.
A base é uma caixa de madeira confeccionada especialmente para o projeto. O
topo é removível para ser possível fácil acesso aos circuitos dentro da caixa. As
teclas são peças de acrílico que também foram confeccionadas especialmente
para o projeto. A informação obtida é processada pelo Arduino que reproduz
um arquivo de áudio .wav correspondente ao som da nota musical da tecla. O
som é reproduzido por um alto-falante acoplado ao xilofone. A base é uma caixa
de madeira para fixar toda parte dos circuitos dentro dela.
Os principais componentes da entrutura do xilofone são: 1) 7 teclas de acrílico; 2) 7 sensores piexoelétricos; 3) 4 LEDs de alto brilho para cada tecla; 4) 1
alto-falante; 5) 1 amplificador de áudio. A Figura 2 mostra a estrutura externa e
interna do xilofone.
Relatório Técnico: Ultron
6
(a)
(b)
Figura 2: A estrutura (a) externa e (b)interna do xilofone.
3.2 Custo do Projeto
A Tabela 1 mostra qual foi o custo aproximado para construção do xilofone, separando os valores por itens.
Relatório Técnico: Ultron
7
Tabela 4: Custo para a construção do xilofone
ITEM
Arduino Mega 2560
Módulo Bluetooth RS-232 HC-05
Módulo SD
Sensor piezoelétrico
LEDs de alto brilho
Alto-falante
Bateria 5V
Placa de Acrílico
Chapa de Compensado
Placa de circuito impresso
Percloreto de Ferro
Outros componentes
TOTAL
$/UN
R$ 72.00
R$ 36.00
R$ 9.00
R$0,41
R$0,60
R$ 6.00
R$ 20.00
R$ 30.00
R$ 40.00
R$ 8.00
R$ 10.00
-
QUANTIDADE
1
1
1
10
28
1
1
1
1
1
1
-
VALOR
R$ 72.00
R$ 36.00
R$ 9.00
R$ 4.10
R$ 16.80
R$ 6.00
R$ 20.00
R$ 30.00
R$ 40.00
R$ 8.00
R$ 10.00
R$ 50.00
R$ 301.90
3.3 Firmware
3.3.1 Atraso por software
Para evitar o uso da função "delay()"do Arduino, a qual trava a execução de todos os processos do xilofone num determinado tempo, optou-se pelo uso de um
método que simula uma programação paralela, que é descrito através do fluxograma da Figura 3: armazenar em uma variável o tempo em que a função foi executada e chamar a função seguinte apenas quando o tempo atual da máquina,
subtraído com tempo armazenado for maior ou igual ao tempo determinado de
espera.
Figura 3: Fluxograma do método de atraso por software adotado.
Essa ideia foi de grande importância para o funcionamento do projeto, pois
Relatório Técnico: Ultron
8
era necessário aguardar intervalos de tempos sem que todo o sistema ficasse
"travado", podendo então, ler informaçoes dos sensores ou executar outras funções do projeto.
3.3.2 Leitura dos sensores
Sabendo que a função "analogRead()"retornava um inteiro de 0 a 1023 dependendo da intensidade da batida, uma taxa de sensibilidade foi definida, a qual,
se o valor obtido do sensor ultrapasse essa taxa, o sistema acionaria os comandos da tecla tocada.
3.3.3 Intensidade da batida
Dependendo da intensidade da batida o sistema retorna um efeito visual por
mais tempo, ou seja, acendendo os LEDS da teclas tocada por mais tempo caso
a intensidade da batida ultrapasse um limite da sensiblidade definida.
3.3.4 Ensinando músicas
O primeiro método consiste em acender os LEDs da tecla corresponde à nota
e, aguardando o usuário tocar a mesma para então, acender a tecla da nota seguinte. Neste modo o sistema percorre o vetor de notas e tempo da música enviado para o xilofone, e em cada iteração acende os LEDs da tecla que deve ser
tocada. Quando o usuário toca uma tecla é verificado se a tecla tocada é a correta. Caso contrário, o sistema foi definido para retornar ao começo da música.
Se a nota tocada é a correta , os LEDs da tecla da próxima nota são acesos e da
atual apagados, repetindo todo o processo de verificação da tecla tocada novamente.
Figura 4: Fluxograma primeiro método de aprendizagem
O segundo método consiste em acender apenas um LED por vez da tecla
que deverá ser tocada conforme o tempo da música. O tempo correto que a tecla deverá ser tocada é quando todos os LEDs estiverem acessos. Desta forma o
sistema percorre o vetor de notas e tempos da música pegando as informações
Relatório Técnico: Ultron
9
da nota atual e da nota seguinte. Na nota atual ele acende todos os LEDs da tecla
correspondente e na nota seguinte acende os 3 primeiros LEDs, em sequência,
dependendo do tempo de espera para essa nota. Se duas teclas estiverem totalmente acesas o sistema apaga a primeira que foi acesa , continuando o funciomento para as notas seguintes. Se o usuário errar a tecla, o sistema não faz
nada e aguarda o usuário acertar. Caso o usuário acerte, os LEDs da tecla são
apagados.
Figura 5: Fluxograma segundo método de aprendizagem
Nos 2 métodos ao finalizar a música o xilofone retorna um efeito visual de
LEDs representando o fim da música e então envia uma informações de desempenho para o aplicativo
3.3.5 Avaliação de desempenho de aprendizado
No primeiro método a avaliação consiste e armazenar a quantidade de erro de
notas tocadas, e o tempo de espera que o sistema contou até o usuário tocar a
tecla correta, quando estava acesa.
No segundo método o sistema armazena a quantidade de notas erradas,
o tempo de espera que até o usuário tocar a tecla correta e também as notas
que ele não tocou, pois nesse modo só é aguardado o toque até a próxima tecla
acesa.
3.3.6 Gravando músicas
Primeiramente é definido um vetor de inteiros para o armazenamento da música gravada. As posições pares, ressaltando que o índice começa em zero, é
para armazenar quais notas são tocadas e as posições ímpares o tempo de espera para a nota seguinte. Essa forma de armazenamento que a sequência da
informações gravadas no vetor é a mesma da sequência da música tocada.
Relatório Técnico: Ultron
10
Quando uma tecla é pressionada, no momento da gravação, é armazenada
na posição atual do vetor a nota referente aquela tecla e, em seguida uma contagem de tempo é iniciada. No instante que uma próxima tecla é tocada, a contagem finaliza e salva na posição seguinte do vetor. Novamente o processo armazenamento anterior é iniciado.
Figura 6: Fluxograma do processo de gravação
3.3.7 Reproduzindo gravações
Tendo a música gravada, a reprodução ocorre percorrendo o vetor (com a gravação), em que, a cada ciclo é reproduzida a nota contida na posição atual, juntamente com um efeito visual de LEDS sobre a tecla característica. O tempo entre
cada nota, é respeitado, sendo que um novo ciclo só é iniciado quando o tempo
de espera é concretizado.
3.3.8 Enviando gravações para o aplicativo
Após a gravação, o envio só é iniciado quando o xilofone receber o comando
referente. O envio foi feito através do método "write()"da biblioteca "Software
Serial.h"que transforma a informação passada pelo argumento em forma de
bytes para então enviar ao aplicativo. Todas a notas e tempos gravados no vetor
são enviados separadamente e em sequência.
3.4 Reprodução do som
A equipe desenvolveu duas maneiras de reproduzir som. A primeira foi a utilização de uma função do Arduino, tone(). A segunda foi a montagem de um
conversor DA e integração com o sistema para reprodução de arquivos WAVE.
Foram desenvolvidas duas alternativas pois o segundo método oferecia riscos de mal-funcionamento que poderiam comprometer o projeto, e era necessário ter uma alternativa.
Relatório Técnico: Ultron
11
3.4.1 Reprodução de tons no Arduino
O Arduino contém uma função "tone()", com ela é possível mandar para os
pinos de áudio ondas que reproduzem tons.
Apenas é identificado nos argumentos da função, o pino de sáida de áudio,
a frequência da onda e tempo de reprodução(em milisegundos). A função é responsável por configurar o pino de sáida para alta frequência e enviar em um determinado tempo uma onda quadrada com a frequência escolhida pelo usuário.
3.4.2 Leitura e Reprodução de áudio WAVE
Um arquivo WAVE é composto por uma sequência de bytes a qual armazenam
as amostras da onda do som gravada, respeitando uma certa taxa de amostragem definida na hora da criação .
O arquivo WAVE foi aberto através da função "open()"da biblioteca "sdFat.h"
e lido byte a byte com ajuda das funções "available()"e "read()". A cada leitura
de byte foi mandado para o pino de saída de áudio (definidos antes no início do
código do Arduino) o valor inteiro relacionado a amostra da onda lida. O tempo
de amostragem, ou mais especificamente o tempo de espera para ler a próxima
amostra, foi definido com base na taxa de amostragem do arquivo WAVE e ajustes em "tentativa e erro"devido aos tempos de leitura.
Os arquivos WAVES, possuíam uma taxa de amostragem de 8KHz, resolução
de 8 bits e canal mono.
3.4.3 Método utilizado
A decisão final da equipe foi por utilizar a reprodução de tons com a função
tone() nativa do Arduino.
A escolha foi feita pois o método de reprodução WAVE se mostrou ineficiente e não condizente com a motivação do projeto. As notas geradas não eram
da qualidade desejada. Como o Xilofone tem intuito didático, era necessário
identificar claramente as notas para aprender e treinar essa percepção. Além
disso, o processamento do arquivo WAVE gerava atrasos no Xilofone e prejudicava a sincronização do acendimento dos LEDs e da reprodução do áudio.
O método de reprodução por tons gera sons sintéticos porém claramente
identificáveis. O que perdemos com essa decisão foi a capacidade de utilizar o
filtro de reverb, que estava implementado em MATLAB para utilização com os
arquivos WAVE.
3.5 Circuitos
A Figura 4 apresenta o diagrama esquemático do xilofone.
Relatório Técnico: Ultron
12
Figura 7: Diagrama esquemático do xilofone
3.5.1 LEDs
Cada uma das teclas do xilofone possue 4 LEDs de alto brilho, o que torna possível a variação da intensidade da tecla. Cada quarteto de LEDs foi ligado em uma
porta analógica do Arduino, em série com um resistor de 100 Ohms e com um
diodo, o que permitiu o acendimento de um LED por vez.
3.5.2 Amplificador de Áudio
Foi utilizado um dispositivo básico para amplificação de áudio de uma caixa de
som. Foram retirados os componentes que não faziam parte do amplificador e
aproveitado o restante da circuitaria original da caixa de som como amplificador
de áudio do sistema embarcado.
4 Aplicativo de gerenciamento
4.1 Estrutura
O aplicativo desenvolvido para Android é composto por:
1. A tela inicial que traz as opções de navegação para as telas ensinar música, gravar música, configurações, e também uma botão para o início dos
comandos de conexão com o xilofone, como mostra a Figura 5(a).
2. A tela de ensinar música contém a lista de músicas salvas no dispositivo e
os botões de chamada das funções enviar músicas, excluir música e baixar
músicas, como mostra a Figura 5(b).
Relatório Técnico: Ultron
13
3. A tela de pontuação que mostra o resultado do desempenho do usuário
em relação a sua aprendizagem, como mostra a Figura 5(c).
4. A tela de gravação que contém os botões para o envio dos comandos iniciar, parar e tocar as gravações e também o botão para salvar ou compartilhar a gravação, como mostra a Figura 5(d).
(a)
(b)
(c)
(d)
Figura 8: Telas do aplicativo para Android. (a) tela do menu, (b) tela de ensinar
música, (c) tela da pontuação e (d) tela de gravação.
4.2 Programação
4.2.1 Interface
A interface é composta por uma tela principal, que gerencia toda a navegação
entre telas do aplicativo. Para cada tela, foi montado um layout específico com
todos os elementos necessários para o execução das funções.
Quando o usuário requisita a chamada de uma nova tela, geralmente através
do pressionamento de algum botão, o sistema da tela principal altera o layout
atual pelo da requisitada. Afim de evitar erros e fechamentos inesperados no
aplicativos os componentes do layout foram inicializado apenas quando o próprio layout era solicitado.
4.2.2 Leitura e envio de músicas para aprendizado
Primeiramente foi definido um formato de arquivo texto, como sendo o método
de armazenamento das músicas que o xilofone poderia ensinar. O arquivo é
composto pelo nome da música, na primeira linha, o autor de quem fez a música, na segunda linha, e na sequência todo vetor corresponde a música.
Na leitura, a biblioteca "File"foi utilizada para gerenciar os arquivo contidos
na pasta do dispositivo. O método pra listar os arquivos da pasta foi "list()". Para
leitura foi usado a classe "BufferedReader()"para ler linha a linha do arquivo.
A decodificação das informações foi feita seguindo a sequência definida no
Relatório Técnico: Ultron
14
arquivo texto da música. No caso do vetor da música salvo, foi necessário usar a
classe "Integer"para transformar um conjunto de números em formato Caracter no formato Inteiro. Essa transformação foi necessária pois a manipulação
das notas e tempos, neste projeto, é trabalhada com valores inteiros.
O envio da música consiste em percorrer todo vetor que armazena as notas
e tempos e cada iteração transformar o valor do índice atual em byte e então
realizar o envio para o xilofone.
4.2.3 Pontuação de desempenho na aprendizagem
Após o término do aprendizado de uma música, o xilofone envia as informações
de desempenho. O aplicativo foi definido para processar essas informações conforme descrito a seguir:
No primeiro método de aprendizagem:
1. a cada nota tocada errada o usuário perde 5% da pontuação máxima
2. a cada 100 milissegundos de espera até tocar a nota correta, o usuário
perde 1% da pontuação máxima
No segundo método de aprendizagem:
1. a cada nota tocada errada o usuário perde 6% da pontuação máxima
2. a cada 100 milissegundos de espera até tocar a nota correta, o usuário
perde 1% da pontuação máxima
3. a cada nota não tocada usuário perde 10% da pontuação máxima
A pontuação máxima foi definida para 1000 pontos.
4.2.4 Gravando e compartilhando músicas
Toda gravação da música ocorre no xilofone. O aplicativo apenas envia o comando para a inicialização e parada da gravação.
Quando a gravação termina o Arduino envia a música da mesma forma que
o aplicativo, ou seja, de nota à nota e tempo à tempo. Aplicativo recebe essa informações e armazena num vetor inteiro, mas isso só ocorre se o usuário decidir
salvar a gravação, para evitar envio de informações desnecessárias.
Com a música no dispositivo, é chamada uma tela com os elementos de
campo de texto nome e autor para identificação da música.
Se o usuário decidir compartilhar, todas informações da música são codificadas no formato JSON[JSO] e enviados para um banco de dados online acessível por todos os usuários que possuem o aplicativo. JSON é formato "universal"que é muito conveniente para troca de informações entre aplicações.
Todas as músicas enviadas para o aplicativo são salvas após as informações
do nome e autor forem digitadas. Foi utilizado a classe "File"para criar o arquivo
Relatório Técnico: Ultron
15
e a classe "FileOutputStream"para gravar os dados no arquivo. Para o salvar vetor da notas e tempos da música, este foi percorrido e cada iteração foi concatenando os valores do vetor em uma string com ajuda do método "toString()"da
classe "Integer", para converter inteiro em string.
O download consiste em acessar o banco de dados online receber no formato JSON a música escolhida. O aplicativo decodifica e salva como nas música
que foram gravadas.
4.2.5 Filtro de distorção
Foi desenvolvido um filtro para a distorção do som produzido. O filtro é ativado
com uma chave. O filtro escolhido foi o reverb.
O filtro foi desenvolvido e testado em MATLAB antes de ser traduzido e portado para o sistema embarcado. O filtro baseia-se em uma equação de diferenças [OPP75] e a filtragem foi feita com a função filter() nativa do MATLAB.
A leitura do arquivo de som (em formato .wav) foi feita com a função audioread(), que também calcula a frequência de amostragem do som. Após a filtragem, é criado um arquivo .wav com a função nativa audiowrite().
Apesar de ter sido implementado, o filtro não foi utilizado na versão final do
projeto, pois o método escolhido para a reprodução do som utilizando o arduino
não permitiu a sua integração.
5 Comunicação
A Tabela 1 apresenta os caracteres de comando adotados no protocolo de comunicação entre o aplicativo Android e o xilofone, via Bluetooth.
Tabela 5: Comandos definidos para a execução da funções no aplicativo
m
n
b
r
s
p
o
y
m
u
Configura o xilofone para recepção do vetor da música
Inicia a função de ensinar música
Para a função de ensinar música
Inicia a gravação das notas da música
Finaliza a gravação
Inicia a reprodução da música gravada
Finaliza a reprodução da música gravada
Configura o xilofone e realiza o envio da música gravada
Configura para recepção do vetor da música gravada
Configura para recepção de desempenho de aprendizagem da música
Relatório Técnico: Ultron
16
6 Conclusão
A equipe atingiu todos os requisitos funcionais mais importantes. O xilofone
captura a vibração das teclas; toca as notas correspondentes às 7 teclas no altofalante com som limpo; acende os LEDs da tecla tocada; ensina o usuário a tocar músicas utilizando o acendimento dos LEDs; se comunica com o aplicativo
através de bluetooth e possui funções de gravação, armazenamento e compartilhamento através do aplicativo.
Não foi possível utilizar variações na intensidade dos LEDs para as duas funções que a requeriam: codificar a intensidade do toque na tecla e, na função de
aprendizagem da música, codificar quanto tempo faltava para a próxima nota
ser tocada. A implementação da intensidade dos LEDs foi feita, mas era muito
difícil discernir diferenças a mesma em ambientes que não estejam completamente escuros.
Para contornar a primeira situação, as teclas ficam acesas por mais tempo
dependendo da intensidade do toque na tecla. Isso dá um retorno visual para o
usuário informando a intensidade do toque.
Para a segunda situação, acendemos os LEDs da tecla progressivamente de
acordo com quanto tempo falta para ela ser tocada. As teclas possuem 4 LEDs,
e acendemos eles um por um de acordo com o tempo da música.
Também não foi possível criar três níveis de dificuldade para a função de
aprendizagem. O objetivo era implementar os níveis Fácil, Médio e Difícil. O
nível Fácil consiste em tocar as teclas que o xilofone acende. Nesse nível o xilofone espera a tecla ser tocada antes de acender a próxima nota. Isso ensina a
sequência de notas porém não ensina o ritmo da música. No nível Difícil o ritmo
foi codificado com o acendimento progressivo dos 4 LEDs de cada tecla.Não foi
possível implementar o nível Médio pois não há como inserir um nível intermediário de dificuldade pois não é possível incluir notas além das 7 já representadas. O xilofone toca apenas uma oitava, e seria necessário codificar outras
oitavas para dificultar o nível Fácil.
A equipe tinha como objetivo atingir os requisitos e produzir um trabalho
de qualidade que prezasse por detalhes e pelo visual. Esses objetivos foram alcançados e a equipe considera o trabalho um sucesso.
Referências
[AND]
Android studio overview.
[ARDa]
Android developers - bluetooth.
[ARDb]
Tutorial ARDUINO. Arduino - knock.
[HOL02] Thorn HOLMES. Electronic and Experimental Music. New York: Routledge, 2002.
Relatório Técnico: Ultron
[JSO]
17
Introducing jason.
[MCR11] M MCROBERTS. Arduino Básico. Novatec, 2011.
[OPP75] A OPPENHEIM. Digital Signal Processing. Prentice-Hall, 1975.
[PAG]
Mitchell PAGE. Wireless communication with pc and arduino board
using bluetooth.
[PIN]
Alexandre PINO. Instrumentação e técnicas de medida: Sensores termoelétricos e piezoelétricos.
Download