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