Juego el francés puede poder utilizando un Arduino y un zumbador (8 / 11 paso)

Paso 8: Juego de notas musicales

Dado que la función buzz() en el bosquejo de ejemplo permite una frecuencia de paso a especificar, es hora de ver qué frecuencias hacen notas musicales y probar una escala musical.

Búsqueda Google [frecuencias de nota musical] reveló esta gran tabla que contiene las frecuencias de una amplia gama musical. Ayudó a responder a la pregunta, "¿cómo hacer el zumbador hacer tonos musicales?".

Un boceto para jugar una octava de notas podría tener este aspecto:

---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

void setup() {}
pinMode (4, salida); configurar un pin de salida de zumbador
}

void loop() {}
Buzz (4, 996, 1000); PIN, frecuencia de la nota, jugar duración en milisegundos
Buzz (4, 1050, 1000);
Buzz (4, 1110, 1000);
Buzz (4, 1180, 1000);
Buzz (4, 1250, 1000);
Buzz (4, 1320, 1000);
Buzz (4, 1400, 1000);
Buzz (4, 1490, 1000);
Buzz (4, 1580, 1000);
Buzz (4, 1670, 1000);
Buzz (4, 1770, 1000);
Buzz (4, 1870, 1000);
Delay(1000); esperar un poco entre zumbidos
}

{} 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---

Que funcionaría, pero buscando las frecuencias en una tabla cada vez que se crea una nota sería demasiado incómodo para algunos. El bosquejo a continuación agrega una matriz de frecuencias de referencia y una nueva función de playNote() que tiene una frecuencia de referencia en la matriz por número y llama a la función de zumbido con frecuencia.

Una nota sobre matrices, es que empiezan con 0, no 1. Así que el primer elemento de noteFreqArr a continuación se hace referencia a como noteFreqArr [0], el segundo sería noteFreqArr [1] y así sucesivamente.

---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

referencia de http://www.phy.mtu.edu/~suits/notefreqs.html
a partir de F noteFreqArr [0]
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 = 0) {}
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() {}
playNote (52, 1000);
playNote (53, 1000);
playNote (54, 1000);
playNote (55, 1000, 100);
playNote (56, 1000);
playNote (57, 1000);
playNote (58, 1000);
playNote (59, 1000, 100);
playNote (60, 1000);
playNote (61, 1000);
playNote (62, 1000);
playNote (63, 1000, 100);
Delay(1000); esperar un poco entre zumbidos
}

{} 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---

¡ Genial! Ahora a hacer música en el siguiente paso...

Artículos Relacionados

Conceptos básicos de convertir su vehículo de control remoto en un sistema autónomo (abejón) utilizando un Arduino

Conceptos básicos de convertir su vehículo de control remoto en un sistema autónomo (abejón) utilizando un Arduino

comencé este proyecto con el objetivo de convertir barato mi RC helicóptero en algo de un UAV o al menos para algunos sensores para reducir las colisiones y otros "haps mal."Ahora por desgracia al principio del proyecto calcularon mal las capaci
Podómetro de Arduino

Podómetro de Arduino

problema: así que mi nutricionista (no todo el mundo tiene un nutricionista) sugerido debo aumentar mi ejercicio que principalmente consiste en pasear a mi perro. Incluso me dio una tabla de actividades y calorías quemadas. Aquí es un ejemplo.http://
Lecciones aprendidas edificio mientras que una inútil caja utilizando un Arduino y un Instructable

Lecciones aprendidas edificio mientras que una inútil caja utilizando un Arduino y un Instructable

Por lo tanto, he encontrado un Instructable en el sitio que parecía bastante bueno. Verás, quería aprovechar el poder de un Arduino para ejecutar un cuadro inútil. Que iba a construir y programar usando el Instructable encontré en el sitio. No sólo e
Puzzlebox órbita: Utilizando un Arduino para controlar un helicóptero infrarrojo

Puzzlebox órbita: Utilizando un Arduino para controlar un helicóptero infrarrojo

en este Instructable vamos a explicar cómo las señales de infrarrojos son utilizados por un control remoto para controlar un juguete o dispositivo, a continuación, demuestran cómo un simple circuito se puede Agregar a un Arduino para manejar el mismo
Cómo capturar codigos de control remoto utilizando un Arduino y un IRreceiver

Cómo capturar codigos de control remoto utilizando un Arduino y un IRreceiver

En este instructable mostraré cómo escribir un pequeño código para capturar los códigos de control remoto en valores hexadecimales y decimales.Esto lo haremos usando al serial monitor que está integrado en el IDE de Arduino.Esto le dará a conocer una
Android controla luces y poder, pfodDevice para Arduino

Android controla luces y poder, pfodDevice para Arduino

Actualización: Ver Andriod/Arduino para principiantes - diseño personalizado Andriod menús para activar salidas de Arduino y apagado. Absolutamente ninguna programación requerida para una alternativa que no requiere ninguna programación en todos.====
Construir un Robot sencillo utilizando un Arduino y un L293 (Puente H)

Construir un Robot sencillo utilizando un Arduino y un L293 (Puente H)

Hola amigos, este es mi primer instructivo y estoy aquí para demostrar cómo construir un robot sencillo con un poco de Arduino programación no te preocupes, he adjuntado el archivo de código a continuación, se puede utilizar para la referencia.Aquell
Serial Servo Controller w/Arduino - Control hasta 12 Servos a la vez utilizando el Arduino y una conexión USB

Serial Servo Controller w/Arduino - Control hasta 12 Servos a la vez utilizando el Arduino y una conexión USB

voy a mostrarle cómo usar el Arduino para controlar hasta 12 servos a la vez con variación mínima.  Mediante una sencilla interfaz serial puede controlar la posición del servo hasta 12 canales.  Hasta 10 posiciones instantáneas se puede guardar y rep
Utilizando un Arduino y Python para parcela/guardar datos

Utilizando un Arduino y Python para parcela/guardar datos

una manera rápida y fácil de ver (y guarde) datos extraídos utilizando un Arduino a tu ordenador.(Nota: no es el método más sólido, pero funciona bastante bien)Materiales:-Arduino (estoy usando un Uno)-Ordenador (tengo un Dell, pero no importa si est
Utilizando un Arduino para cargar un DS lite

Utilizando un Arduino para cargar un DS lite

Este instructable es para una ds lite utilizando un Arduino y dos cables de carga. Este también es mi primer instructivo, así que no puede ser lo mejor posible. :)Aviso: no soy responsable por cualquier daño hecho a tu ds, por favor, trabajo con cuid
Detector de campo electromagnético utilizando un Arduino

Detector de campo electromagnético utilizando un Arduino

Dispositivo electrónico nunca emite una cierta cantidad de campos electromagnéticos y podemos utilizar esta radiación para aprender algunas cosas sobre el circuito.En la actualidad instructable voy a mostrar cómo construir tu propio medidor de campo
Inalámbrico de control remoto utilizando NRF24L01 de 2,4 Ghz: sencillo Tutorial utilizando NRF24L01 & Arduino

Inalámbrico de control remoto utilizando NRF24L01 de 2,4 Ghz: sencillo Tutorial utilizando NRF24L01 & Arduino

Hola a todos este es mi segundo instructable. Después de mucho surf en GOOGLE cuando wont capaces de encontrar un fácil y sencillo tutorial para NRF24L01 transceptor entonces decidió publicar un instructable sobre esto. Este es un simple tutorial cor
Brazo robótico móvil utilizando PHIRO + Arduino

Brazo robótico móvil utilizando PHIRO + Arduino

Estamos de vuelta con otro tutorial para mostrar cómo convertir PHIRO Pro en un brazo robótico móvil fresco que puede elegir y poner cosas! Similar a nuestra anterior PHIRO Arduino Color sensor instructable, vamos a utilizar Código de bolsillo en un
Construcción de juegos retro moderno PC AMD Nintendo utilizando piezas nuevas y viejas

Construcción de juegos retro moderno PC AMD Nintendo utilizando piezas nuevas y viejas

OK, por lo que he leido muchos de los instructables aquí sobre la construcción de un PC utilizando una Nintendo NES como donante para el caso. Han construido muy pocos PCs en los últimos 10 años, pero estoy siempre buscando hacer algo un poco diferen