Arduino possui uma ampla variedade de aplicações. Ele pode ser usado em quase todos os campos. Suas aplicações aumentam dia a dia porque é de código aberto e qualquer pessoa pode criar um novo conjunto de funções e biblioteca para fazer a interface de qualquer novo dispositivo com o Arduino. O aplicativo fornecido demonstra o uso do Arduino como gerador de tons e melodias. Inclui teclado e LCD para interface de usuário. As notas musicais ou melodia são geradas quando a tecla é pressionada e a frequência do som gerado é exibida no LCD. Então, na verdade, o aplicativo fornecido ilustra a interface do teclado e do LCD com o Arduino junto com a geração de tons e melodias.
Figura 1: Protótipo de notas musicais e gerador de melodia baseado em Arduino
Descrição do circuito:
Conforme mostrado no circuito, um LCD 16×2, um teclado de matriz 4×3 e um alto-falante de 8Ω fazem interface com a placa Arduino.
• O pino Vcc (2) e o pino Vss (1) do LCD são conectados aos pinos +5 V e Gnd da placa Arduino, respectivamente, para fornecer polarização.
• O pino LED+ (15) e o pino LED- (16) do LCD também são conectados aos pinos +5 e Gnd, respectivamente, para LIGAR a luz de fundo do LED do LCD.
• O pino Rs (4) e o pino En (6) estão conectados aos pinos digitais 8 e 9 do Arduino, enquanto o pino Rw (5) está permanentemente conectado ao terra para habilitação de gravação.
• Os pinos de dados D4 – D7 do LCD são conectados aos pinos digitais 10 – 13 do Arduino
• 3 colunas C1, C2 e C3 do teclado matricial são conectadas com 0,1 e 2 pinos da placa Arduino enquanto 4 linhas R1, R2, R3 e R4 são conectadas com 3, 4, 5 e 6 pinos.
• Um alto-falante de 8Ω está conectado ao pino 7 conforme mostrado no diagrama de circuito.
Operação do circuito:
• Inicialmente, a mensagem é exibida no LCD como “gerador de tom do teclado”
• Quando qualquer tecla é pressionada, o pressionamento da tecla é detectado e o Arduino identifica qual tecla foi pressionada
• Com base no número da tecla pressionada, o som de frequência* específico (tom) é gerado através do alto-falante por 1 segundo
• O número da chave é exibido no LCD e a frequência do som gerado é exibida no LCD
• Conforme mostrado na figura, o teclado é o teclado do telefone (numérico) e inclui a tecla * e a tecla #. Então, quando a tecla * é pressionada, ela gera a melodia do tom 1 e quando a tecla # é pressionada, ela gera a melodia do tom 2 que é exibida no LCD
*Nota: a frequência do som gerado é escolhida para produzir 'sa', 're', 'ga', 'ma', 'pa', 'dha' e 'ni' todas as sete notas musicais
A funcionalidade completa deste projeto se deve ao programa de software carregado na memória FLASH interna do microcontrolador da placa Arduino ATMega328. Vejamos então o programa e sua explicação lógica.
Programa de software e lógica:
O programa de software é escrito na linguagem Arduino. Ele é compilado usando a ferramenta de software Arduino IDE e carregado na memória FLASH interna do microcontrolador da placa Arduino. Todos nós sabemos que o Arduino IDE possui um pacote de biblioteca poderoso que inclui um conjunto completo de funções para um dispositivo periférico específico. Neste programa, estamos usando três bibliotecas:
1) teclado matricial – para fazer a interface do teclado matricial com o Arduino
2) cristal líquido – para fazer a interface do LCD com o Arduino
3) gerador de tom – para gerar som de frequência diferente
A biblioteca do teclado matricial nos permite configurar nosso teclado matricial como um número de linhas-colunas, padrão de teclas, etc. Ele detecta o pressionamento de tecla, identifica qual tecla está pressionada e executa muitas outras funções. A biblioteca de cristal líquido é, como sabemos, especialmente para fazer a interface de diferentes tipos de LCDs com o Arduino. Ele configura o LCD, exibe texto, dados numéricos, limpa o LCD, define as posições do cursor, etc. O gerador de tons é usado para gerar som de frequência específica a partir de qualquer pino digital do Arduino.
Código fonte do projeto
###
//Program to #include#include const byte ROWS = 4; // Four rows const byte COLS = 3; // Three columns int sound(10) = {1047,1109,1245,1319,1397,1480,1568,1661,1760,1865}; int sound_pin = 7; // Define the Keymap char keys(ROWS)(COLS) = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte rowPins(ROWS) = { 3, 4, 5, 6 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins. byte colPins(COLS) = { 0, 1, 2 }; // Create the Keypad Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); LiquidCrystal lcd(8, 9, 10, 11, 12, 13); #define ledpin 13 void setup { pinMode(ledpin,OUTPUT); digitalWrite(ledpin, HIGH); lcd.begin(16, 2); lcd.clear ; lcd.print(" keypad tone"); lcd.setCursor(4,1); lcd.print("generator"); } void loop { int i; char key = kpd.getKey ; if(key) // Check for a valid key. { switch (key) { case '*': lcd.clear ; lcd.print("playing melody 1"); for(i=0;i<10;i++) tone(sound_pin,sound(i),500); break; case '#': lcd.clear ; lcd.print("playing melody 2"); for(i=0;i<10;i++) tone(sound_pin,sound(10-i),500); break; default: lcd.clear ; lcd.print("key:"); lcd.print(key); lcd.setCursor(0,1); lcd.print("sound "); lcd.print(sound(key-48)); lcd.print(" Hz"); tone(sound_pin,sound(key-48),1000); break; } } } ###
Diagramas de circuito
Diagrama de Circuito-Arduino-Based-Music-Notes-Melody-Generator |
Vídeo do projeto