Despertador binario de Arduino (12 / 16 paso)

Paso 12: Señal de alarma

Es bastante fácil de generar sonido en arduino sólo usando digitalWrite() y delay() para alternar el estado de la clavija del altavoz en la frecuencia correcta. Pero para este proyecto necesito constantemente Revise los botones, actualizar el reloj y actualizar la pantalla, incluso cuando se está reproduciendo la señal de alarma. Por lo tanto la generación de sonido tiene que ser sin bloqueos, que significa que no tienes que esperar a que los tonos poner fin antes de hacer cualquier otra cosa.

Por lo tanto utilicé la biblioteca tono escrito por Brett Hagman para generar sonido. Es una biblioteca muy agradable que hace que sea fácil reproducir tonos diferentes, y lo mejor de todo, es no bloqueando.

Porque el la melodía debe ser bloqueo no sólo no podía utilizar un bucle for para recorrer los tonos. En su lugar he usado declaraciones de if. cada vez que la función de la melodía es llamado comprueba si el tono último ha dejado de jugar, si tiene comenzará otro. La "melodía" que he utilizado es simplemente C, D, E, F, G, A, B, C primero jugó uno después de otro, entonces todos los demás, entonces cada tercera y así sucesivamente.
_______________________________________________________________________

La función play_melody():

FUNCIÓN DE VARIABLES "INTERNAS" PARA PLAY_MELODY:
melodía de int [] = {NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5};
int melody_length = sizeof(melody) / 2; Longitud de la melodía, para bucle.
sizeof() devuelve el tamaño de la matriz de bytes y porque
un int ocupa 2 bytes, sizeof devuelve 2 * (número de elementos de la matriz)

int i = 0;        variable de bucle
Boolean reset_loop = true;
salto de int = 1;     Cuántas notas para saltar en la matriz de la melodía
int posición = 0; posición en matriz de melodía

void play_melody()
{
Si (! () tone_maker.isPlaying())) / / si se ha detenido el último tono
{
if(i {
tone_maker.STOP();
tone_maker.Play (melodía [posición], 300);
Una pausa entre las notas...
Delay(300); reemplazar con no bloqueando.
si (depurar)
{/ / Si depuración, Informe lazo, tono, ritmo y la duración
Serial.Print(Position);
Serial.Print(":");
Serial.Print(Melody[Position]);
Serial.Print("\n");
}
posición += salto;
Si la posición es más grande que la matriz, a empezar desde el principio de matriz:
posición = posición % melody_length;
i ++;
}
otra cosa
{
salto ++;
i = 0;
}
}
}
_______________________________________________________________________

Artículos Relacionados

¿Arduino despertador binario (bolsillo)

¿Arduino despertador binario (bolsillo)

Ever quería un despertador binario? Yo también. Así que miré a mi alrededor en Instructables, porque hay muchos buenos alrededor.Lo que es aún mejor: están basados en Arduino, uno de mis juguetes favoritos.Mi favorito es este: Me inspiró mucho y sí t
Cwik Clock v1.0 - un reloj binario de Arduino

Cwik Clock v1.0 - un reloj binario de Arduino

ResumenEsta es una guía a la construcción de un reloj accionado Arduino que utiliza LEDs para mostrar un reloj de 24 horas (horas y minutos) como dígitos binarios, un medidor analógico para mostrar a los segundos, un interruptor para conmutar entre e
Reloj binario de Arduino

Reloj binario de Arduino

Finalmente he dicho, el reloj binario la gente alrededor de mí oído me habló para tan de largo. Estaba tratando de hacer esto durante las últimas vacaciones de Navidad, pero le faltaba tiempo, cambié empleos 2 veces en los últimos 6 meses... por lo q
Reloj binario de Arduino usando LED Matrix

Reloj binario de Arduino usando LED Matrix

Este sitio tiene muchos puestos finas que describe la construcción de los relojes binarios. Soy tremendamente inestable, sin embargo y tienen dificultad para cualquier soldadura. Por lo tanto quería hacer mío de una matriz de 8 x 8 LED MAX7219-contro
Mi reloj binario de Arduino

Mi reloj binario de Arduino

Hola desde ItaliaAunque muchos relojes binarios creados, mi proyecto se inspiró principalmente a esto:http:// muy inteligente y divertido.He intentado mejorar el diseño y para añadir algo personal.Creo que es un buen resultado al final.El proyecto no
Despertador de Bacon - Arduino

Despertador de Bacon - Arduino

Este es un proyecto que surgió inspirado por mi amor de tocino!Este es un reloj alarma diseñado para despertar con el olor de tocino. Con la ayuda de un arduino que el despertador ya tendrá el aroma de tocino llenando la sala de despertar hasta antes
Reloj métrico binario; proyecto Arduino fácil.

Reloj métrico binario; proyecto Arduino fácil.

Se trata de una muy extraña clase de reloj, que fácilmente se puede hacer con materiales simples.Para empezar la explicación, me gustaría decir que siempre he querido tiempo métrico. 5:00 sería mediodía, 7:5 (18:00), las tres cuartas partes y así suc
Reloj binario de Arduino (horas, minutos y segundos)

Reloj binario de Arduino (horas, minutos y segundos)

Hola a todos; Estaba buscando este proyecto durante mucho tiempo.  Finalmente yo se que con mucho esfuerzo.  Para este proyecto necesitarás:1 - Arduino Uno ($30 de Radio Shack)2 - RTC DS1307 (como $2 por EBay)3 - 2 registros de desplazamiento 74HC595
Edificio IllyClock - despertador basado en Arduino en una poder de café

Edificio IllyClock - despertador basado en Arduino en una poder de café

actualizado 04 de agosto de 2011Una versión simplificada es ahora descrito aquí.El propósito de este proyecto es construir un reloj de alarma similar a la que se presenta en el siguiente video.Al lado de la caja, la función original de IllyClock mues
Arduino Powered reloj binario

Arduino Powered reloj binario

este instructable le ayudará a construir un reloj binario de Arduino.  La idea orignial de este instructable fue diseñado por Daniel Andrade.  Mi instructable utiliza componentes de montaje superficial, pero puede ser fácilmente adaptado para a travé
Fracaso y éxito de Arduino Watch

Fracaso y éxito de Arduino Watch

Decidí construir un reloj binario de Arduino. Sé que un reloj de pulsera debe ser de tamaño pequeño ya que es un proyecto usable. Para ello, he seleccionado dispositivo de montaje superficial (SMD) como TQFP Atmega IC, SMD LED y resistencia SMD. Como
Alimentación de Circuts

Alimentación de Circuts

vamos a hacerExplorar publicarSecompartir lo que makeFeatured:IoT de IntelCorte por láserHacks de la vidaJoyeríaCon Instructables pueden compartir lo que hacemos con el mundo y aprovechar una comunidad creciente de expertos creativos. Cómo funciona»
Construcción de droides C3PO

Construcción de droides C3PO

El droide C3PO es un pedazo de pantalla que hice que está parado sobre una base iluminada. El droide es controlado por Arduino dosmicrocontroladores y un controlador de servo de Pololu Maestro USB. Contraté a un imitador de voz para leer un script qu
NerdClock: Un RGB reloj binario [Software de Arduino]

NerdClock: Un RGB reloj binario [Software de Arduino]

IntroducciónRelojes binarios son una manera genial para mostrar el tiempo de una manera misteriosa. Y a los que no saben leer ese tipo de reloj es una manera simple, pero eficaz para incrementar su nerdiness nivel nubes. ¿Que podría ser algo que gust