Música! Segundo a
wikipedia é a "
combinação harmoniosa e expressiva de sons", ou "
forma de arte que se constitui na combinação de vários sons e ritmos", é o tema do artigo de hoje: vamos aprender a reproduzir sons apenas com o Arduino UNO e um
Buzzer baratinho.
Na própria IDE do Arduino existem quatro exemplos de geração de sons, possibilitando até a criação de pequenas músicas (instrumentais). O site oficial do Arduino traz até tutoriais "aulas" com exemplos de programas, que também veremos aqui hoje.
Tudo que você precisa para reproduzir sons com Arduino é um pequeno Buzzer
como este aqui (visível na imagem acima), que pode ser conectado diretamente ao conector do Arduino UNO através do pino 11. Isto porque o espaçamento dos pinos do buzzer é igual ao espaçamento entre o pino 11 do Arduino e um ponto de GND.
Importante notar que auto-falantes não devem ser conectados diretamente ao Arduino, e só estamos conectando este buzzer direto porque a corrente que ele consome é baixa (no máximo 25mA segundo especificação).
Após fazer a conexão física do Buzzer ao Arduino, é hora de começar a fazer barulho, literalmente. Copie e cole o código abaixo na IDE do Arduino, então faça o upload para sua placa e escute a melodia!. Este código reproduz sete frequência diferentes (220Hz, 440Hz, 880Hz, 1760Hz, 3520Hz, 7040Hz, 14080Hz); cada uma por 0,5 segundos, repetidamente e sem parar.
void setup() {
}
void loop() {
// Tocar cada nota (frequencia) por 500mS:
tone(11, 220); // sintaxe: (pino, frequencia);
delay(500);
tone(11, 440);
delay(500);
tone(11, 880);
delay(500);
tone(11, 1760);
delay(500);
tone(11, 3520);
delay(500);
tone(11, 7040);
delay(500);
tone(11, 14080);
delay(500);
// desligar o pino 11; nao ha necessidade, estou usando este comando somente para
// demonstrar que e possivel desligar a geracao de som.
noTone(11);
}
Alguns detalhes tem que ser observados:
- Repare que cada vez que a função tone() é chamada, você deve definir o pino de saída (no nosso caso, 11) e a frequência. Caso você queira gerar um som em outro pino (que não oque já está gerando som), você deve primeiro chamar a função noTone(NúmeroDoPino) e desligar o pino atual, antes de ligar o próximo.
O próximo código de exemplo (abaixo) executa uma pequena música toda vez que o Arduino é energizado ou resetado (e não contiuamente como no exemplo anterior). Isto porque toda a música é gerada no
setup(){...} e não no
loop(){...}. Mais explicações sobre esta música são encontrada na
página oficial do Arduino.
// notes in the melody:
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4
};
void setup() {
// iterate over the notes of the melody:
for (int thisNote = 0; thisNote < 8; thisNote++) {
// to calculate the note duration, take one second
// divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000 / noteDurations[thisNote];
tone(11, melody[thisNote], noteDuration);
// to distinguish the notes, set a minimum time between them.
// the note's duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(11);
}
}
void loop() {
// no need to repeat the melody.
}
Marcadores: arduino musica, Arduino uno, fazendo musica, melody, musica, notas musicais, piano arduino, som arduino, tocando musica, tone, tones