Paso 9: Jugar la Can Can
Es el momento de hacer música! Utilizando un piano de cola (o Garage Band en mi caso), escuchar las distintas notas que desea crear. Tocar la canción de oído, o ver en partituras. Para cada nota que desea crear, se cuenta desde la primera nota en la matriz, F, para averiguar que número entero de la nota en la matriz coincide con la nota tocada en el piano.
NoteInt ejemplo:
G =??: podrá resolver esto.
F = 0
Añadir una octava (12) para hacer el tono más agradable este zumbador = 12
G es mayores que F (clave blanco y negro) en el teclado 2 llaves, así que agregamos 2 = 14
G = 14
Longitud de juego en este ejemplo:
una 16ª Nota = 250 milisegundos
una corchea = 500 milisegundos
una nota de cuarto = 1000 milisegundos
una nota de media = 2000 milisegundos
redonda = 4000 milisegundos
Además, la longitud de 'aliento' por defecto en la función playNote() se ha cambiado a 20, para dar una leve pausa entre cada nota para dar un efecto de 'tee-tee-tee-tee' al jugar. Aquí están los resultados:
---copia después de esta línea---
Función de ejemplo de timbre para el timbre de CEM-1203 (de Sparkfun parte #COM-07950).
por Rob Faludi
http://www.Faludi.com
Adiciones por Christopher Stevens
http://www.christopherstevens.cc
referencia de http://www.phy.mtu.edu/~suits/notefreqs.html
a partir de F noteFreqArr [1]
int noteFreqArr [] = {}
49.4 52.3, 55.4, 58.7, 62.2, 65.9, 69.9, 74, 78.4, 83.1, 88, 93.2,
98.8, 105, 111, 117, 124, 132, 140, 148, 157, 166, 176, 186,
198, 209, 222, 235, 249, 264, 279, 296, 314, 332, 352, 373,
395, 419, 444, 470, 498, 527, 559, 592, 627, 665, 704, 746,
790 837, 887, 940, 996, 1050, 1110, 1180, 1250, 1320, 1400, 1490,
1580, 1670, 1770, 1870, 1990, 2100};
void setup() {}
pinMode (4, salida); configurar un pin de salida de zumbador
}
void playNote (int noteInt, larga duración, de largo aliento = 20) {}
longitud = longitud - respiración;
Buzz (4, noteFreqArr [noteInt], longitud);
if(Breath > 0) {//take una breve pausa o 'aliento' si se especifica
Delay(Breath);
}
}
void loop() {}
plato principal
playNote(24,500);
playNote(17,1000);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(24,500);
playNote(24,500);
playNote(24,250);
playNote(26,250);
playNote(21,250);
playNote(22,250);
playNote(19,500);
playNote(19,500);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(17,250);
playNote(29,250);
playNote(28,250);
playNote(26,250);
playNote(24,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(17,1000);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(24,500);
playNote(24,500);
playNote(24,250);
playNote(26,250);
playNote(21,250);
playNote(22,250);
playNote(19,500);
playNote(19,500);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(17,250);
playNote(24,250);
playNote(19,250);
playNote(21,250);
playNote(17,250);
Delay(250);
}
{} void buzz (int targetPin, frecuencia largo, longitud)
delayValue largo = 1000000/frecuencia/2; calcular el valor de retardo entre las transiciones
1 segundo 's valor de microsegundos, divididos por la frecuencia, luego dividir por la mitad desde
Hay dos fases en cada ciclo
numCycles largo = frecuencia * longitud / 1000; calcular el número de ciclos de tiempo adecuado
multiplicar la frecuencia, que es realmente ciclos por segundo, por el número de segundos para
obtener el número total de ciclos para producir
para (largo i = 0; i < numCycles; i ++) {/ / de la longitud calculada del tiempo...
digitalWrite(targetPin,HIGH); escribo el pin del zumbador para empujar el diafragma
delayMicroseconds(delayValue); Espere a que el valor de retardo calculado
digitalWrite(targetPin,LOW); Escriba el pin de zumbador baja a tire hacia atrás del diafragma
delayMicroseconds(delayValue); againf de espera o el valor de retardo calculado
}
}
---copiar antes de esta línea---
El Arduino es ahora el que puede puede, pero sigue siendo... bla, bla. El siguiente paso da las notas de textura un poco más.