PRÁTICA 10 – TOM E MÚSICA
Objetivos:
- Conectar um buzzer no Arduino e gerar uma música
INTRODUÇÃO
Um Buzzer é um alto-falante piezoelétrico (feito com um cristal) bastante simples. Ele pode ser plugado diretamente a um microprocessador para emitir som.
É possível emitir uma nota musical usando o comando tone() do arduino.
Tarefa 1:
- Montar o circuito a seguir. Todos os programas são para esse mesmo circuito:
Programa 1 – Simples onda quadrada com digitalWrite e delay
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void setup() { //Buzzer no pino 10 pinMode(10, OUTPUT); } void loop() { //Manda o buzzer para frente digitalWrite(10, HIGH); //Espera 1136 us delayMicroseconds(1136); //Manda o buzzer para trás digitalWrite(10, LOW); //Espera 1136 us delayMicroseconds(1136); } |
Programa 2 – Sirene Usando Tone
1 2 3 4 5 6 7 8 9 10 11 |
void setup() { //Buzzer no pino 10 pinMode(10, OUTPUT); } void loop() { tone(10, 880); //O comando tone envia um tom para o pino 10, frequencia 880Hz delay(1000); //Espera 1s tone(10, 440); //O comando tone envia um tom para o pino 10, frequencia 440Hz delay(1000); //Espera 1s } |
Programa 3 – Uma música muito simples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
// Notas 261, 277, 294, 311, 330, 349, 370, 392, 415, 440 // FREQUENCIA (Hz) Dó Dó# Ré Ré# Mi Fá Fá# Sol Sol# Lá void setup() { pinMode(10, OUTPUT); } void pausa() { noTone(10); delay(100); } void loop() { //Dó tone(10, 261); delay(400); pausa(); // Pausa entre as notas //Ré tone(10, 294); delay(400); pausa(); //Mi tone(10, 330); delay(400); pausa(); //Fá tone(10, 349); delay(400); pausa(); //Fá rápido tone(10, 349); delay(200); pausa(); //Fá rápido tone(10, 349); delay(200); pausa(); pausa(); //Dó tone(10, 261); delay(400); pausa(); //Ré tone(10, 294); delay(400); pausa(); //Dó tone(10, 261); delay(400); pausa(); //Ré tone(10, 294); delay(400); pausa(); //Ré rápido tone(10, 294); delay(200); pausa(); //Ré rápido tone(10, 294); delay(200); pausa(); pausa(); // A música pede uma pausa maior aqui (por isso tem 2x pausa) //Dó tone(10, 261); delay(400); pausa(); //Sol tone(10, 392); delay(400); pausa(); //Fá tone(10, 349); delay(400); pausa(); //Mi tone(10, 330); delay(400); pausa(); //Mi rápido tone(10, 330); delay(200); pausa(); //Mi rápido tone(10, 330); delay(200); pausa(); pausa(); // A música pede uma pausa maior aqui (por isso tem 2x pausa) //Dó tone(10, 261); delay(400); pausa(); //Ré tone(10, 294); delay(400); pausa(); //Mi tone(10, 330); delay(400); pausa(); //Fá tone(10, 349); delay(400); pausa(); //Fá rápido tone(10, 349); delay(200); pausa(); //Fá rápido tone(10, 349); delay(200); pausa(); pausa(); // A música pede uma pausa maior aqui (por isso tem 2x pausa) delay(1000); // Pausa um tempo maior antes de repetir tudo } |
Programa 4 – Tocando a música tema do Mário
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//melodia do MARIO int melodia[] = {660,660,660,510,660,770,380,510,380,320,440,480,450,430,380,660,760,860,700,760,660,520,580,480,510,380,320,440,480,450,430,380,660,760,860,700,760,660,520,580,480,500,760,720,680,620,650,380,430,500,430,500,570,500,760,720,680,620,650,1020,1020,1020,380,500,760,720,680,620,650,380,430,500,430,500,570,585,550,500,380,500,500,500,500,760,720,680,620,650,380,430,500,430,500,570,500,760,720,680,620,650,1020,1020,1020,380,500,760,720,680,620,650,380,430,500,430,500,570,585,550,500,380,500,500,500,500,500,500,500,580,660,500,430,380,500,500,500,500,580,660,870,760,500,500,500,500,580,660,500,430,380,660,660,660,510,660,770,380}; //duraçao de cada nota int duracaodasnotas[] = {100,100,100,100,100,100,100,100,100,100,100,80,100,100,100,80,50,100,80,50,80,80,80,80,100,100,100,100,80,100,100,100,80,50,100,80,50,80,80,80,80,100,100,100,100,150,150,100,100,100,100,100,100,100,100,100,100,150,200,80,80,80,100,100,100,100,100,150,150,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,150,150,100,100,100,100,100,100,100,100,100,100,150,200,80,80,80,100,100,100,100,100,150,150,100,100,100,100,100,100,100,100,100,100,100,100,100,60,80,60,80,80,80,80,80,80,60,80,60,80,80,80,80,80,60,80,60,80,80,80,80,80,80,100,100,100,100,100,100,100}; void setup() { pinMode(10, OUTPUT); } void loop() { //for para tocar as 156 notas começando no 0 ate 156 ++ incrementado for (int nota = 0; nota < 156; nota++) { int duracaodanota = duracaodasnotas[nota]; tone(10, melodia[nota],duracaodanota); int pausadepoisdasnotas[] = {150,300,300,100,300,550,575,450,400,500,300,330,150,300,200,200,150,300,150,350,300,150,150,500,450,400,500,300,330,150,300,200,200,150,300,150,350,300,150,150,500,300,100,150,150,300,300,150,150,300,150,100,220,300,100,150,150,300,300,300,150,300,300,300,100,150,150,300,300,150,150,300,150,100,420,450,420,360,300,300,150,300,300,100,150,150,300,300,150,150,300,150,100,220,300,100,150,150,300,300,300,150,300,300,300,100,150,150,300,300,150,150,300,150,100,420,450,420,360,300,300,150,300,150,300,350,150,350,150,300,150,600,150,300,350,150,150,550,325,600,150,300,350,150,350,150,300,150,600,150,300,300,100,300,550,575}; delay(pausadepoisdasnotas[nota]); noTone(10); } } |
Desafio: toque sua própria música!