Búsqueda del tesoro audio (5 / 14 paso)

Paso 5: El código de Arduino

Aquí es copia del código de Arduino. Puede descargar el archivo de código adjunto, o puede copiar y pegar este texto en un dibujo nuevo.

Luego conecte la placa Arduino al ordenador y cargar el código.

#include
#include #include #include "WaveUtil.h" #include "WaveHC.h"

Tarjeta SdReader; Este objeto contiene la información de la tarjeta FatVolume vol; Contiene la información de la partición en la raíz de FatReader de tarjeta; Esto contiene la información para el sistema de archivos en la tarjeta FatReader f; Esto contiene la información del archivo estamos jugamos

Ola WaveHC; Este es el único objeto (audio) de la onda, puesto que sólo jugaremos uno a la vez

#define DEBOUNCE 100 / botón debouncer

Esta práctica función devolverá el número de bytes actualmente libres en RAM, ideal para depuración! int freeRam(void) {extern int __bss_end; int extern * __brkval; int free_memory; si ((int) __brkval == 0) {free_memory = ((int) & free_memory)-((int) & __bss_end);} else {free_memory = ((int) & free_memory)-((int) __brkval);} volver free_memory;}

void sdErrorCheck(void) {si (! card.errorCode()) retorno; putstring ("\n\rSD I/O error:"); Serial.Print(Card.ErrorCode(), hexagonal); putstring (","); Serial.println(Card.errorData(), hexagonal); while(1); }

<---configuración de vacío void setup() {/ / configurar serie puerto Serial.begin(9600); putstring_nl ("WaveHC con 6 botones"); putstring ("memoria RAM libre:"); Esto puede ayudar con la depuración, quedarse sin RAM es mala Serial.println(freeRam()); Si es menor de 150 bytes escribe con problemas! Configurar los pines de salida para el control de la DAC. Este los pernos se definen en la biblioteca pinMode (2, salida); pinMode (3, salida); pinMode (4, salida); pinMode (5, salida); pin13 LED pinMode (13, salida); habilitar las resistencias pull-up en interruptor de pins (entradas analógicas) digitalWrite (14, alto); digitalWrite (15, alto); digitalWrite (16, alto); digitalWrite (17, HIGH); digitalWrite (18, alta); digitalWrite (19, alto); Si (! card.init(true)) {//play con spi de 4 MHz si 8MHz no funciona para usted si (! card.init()) {//play con 8 MHz spi (por defecto más rápido!) putstring_nl ("tarjeta init. no se pudo!"); Algo salió mal, permite imprimir por qué sdErrorCheck(); while(1); entonces 'detener': ¡ no! } / / permite optimizar la lectura - algunas tarjetas pueden tiempo de espera. Desactivar si tienes problemas card.partialBlockRead(true); Ahora buscaremos una partición FAT! parte de uint8_t; para (parte = 0; parte < 5; parte ++) {/ / tenemos hasta 5 ranuras en if (vol.init (tarjeta, parte)) break; / / nos encontró uno, permite la libertad bajo fianza} si (parte == 5) {/ / si terminamos por no encontrar uno :(putstring_nl ("No válida partición FAT!"); sdErrorCheck(); / / algo salió mal, permite imprimir por qué while(1); / / luego 'detener' - no!} / / permite decir que el usuario lo encontramos putstring ("partición de uso"); Serial.Print (parte, DEC); putstring (", el tipo es grasa"); Serial.println(Vol.fatType(),DEC); ¿FAT16 o FAT32? Intente abrir el directorio raíz si (! root.openRoot(vol)) {putstring_nl ("no se puede abrir raíz dir!"); / / algo salió mal, while(1); / / luego 'detener' - no!} / / ¡ UF! Llegamos pasado las partes difíciles. putstring_nl("Ready!"); }

//<------------------------------------------------------------------------------------- Void Loop

void loop() {/ / putstring("."); / / descomentar esto para ver si el bucle no está ejecutando int secretCodeOne [6] = {1, 2, 3, 4, 5, 6}; int secretCodeTwo [6] = {1, 1, 2, 2, 3, 3}; int secretCodeThree [6] = {2, 4, 6, 1, 3, 5}; int secretCodeFour [6] = {1, 2, 3, 5, 5, 5}; int secretCodeFive [6] = {1, 2, 3, 3, 2, 1}; int secretCodeSix [6] = {1 2, 3, 4, 5, 1};

int enteredCode [6] = {0, 0, 0, 0, 0, 0}; int correctKeys = 0; éxito de int = 0; byte que presiona; almacena valores de tecla int i = 0; iteración del bucle

para (me = 0; i < 6; i ++) //stores prensado valores en una matriz {hacer {presiona = check_switches();} mientras presionado < 1; enteredCode [i] = presiona; //stores presiona valores en una matriz delay(500); Serial.println(enteredCode[i]); tecla imprimir}

para (i = 0; i < 6; i ++) //Check código uno {si (enteredCode [i] == secretCodeOne[i]) {correctKeys = correctKeys + 1; //counts número de teclas correctas}} si (correctKeys == 6) //if el código introducido coincide con código uno, juego de pista uno {Serial.println ("código una correcta"); playcomplete("1.WAV"); éxito = 1;} correctKeys = 0; contador clave correcta

para (i = 0; i < 6; i ++) //Check código dos {si (enteredCode [i] == secretCodeTwo[i]) {correctKeys = correctKeys + 1; //counts número de teclas correctas}} si (correctKeys == 6) //if el código introducido coincide con código uno, juego de pista uno {Serial.println ("código dos correctos"); playcomplete("2.WAV"); éxito = 1;} correctKeys = 0; contador clave correcta

para (i = 0; i < 6; i ++) //Check código tres {si (enteredCode [i] == secretCodeThree[i]) {correctKeys = correctKeys + 1; //counts número de teclas correctas}} si (correctKeys == 6) //if el código introducido coincide con código uno, juego de pista uno {Serial.println ("código tres correcta"); playcomplete("3.WAV"); éxito = 1;} correctKeys = 0; contador clave correcta

para (i = 0; i < 6; i ++) //Check código cuatro {si (enteredCode [i] == secretCodeFour[i]) {correctKeys = correctKeys + 1; //counts número de teclas correctas}} si (correctKeys == 6) //if el código introducido coincide con código uno, juego de pista uno {Serial.println ("código cuatro correcta"); playcomplete("4.WAV"); éxito = 1;} correctKeys = 0; contador clave correcta

para (i = 0; i < 6; i ++) //Check código cinco {si (enteredCode [i] == secretCodeFive[i]) {correctKeys = correctKeys + 1; //counts número de teclas correctas}} si (correctKeys == 6) //if el código introducido coincide con código uno, juego de pista uno {Serial.println ("código cinco correctos"); playcomplete("5.WAV"); éxito = 1;} correctKeys = 0; contador clave correcta

para (i = 0; i < 6; i ++) //Check código seis {si (enteredCode [i] == secretCodeSix[i]) {correctKeys = correctKeys + 1; //counts número de teclas correctas}} si (correctKeys == 6) //if el código introducido coincide con código uno, juego de pista uno {Serial.println ("código seis correctos"); playcomplete("6.WAV"); éxito = 1;} correctKeys = 0; contador clave correcta

if(Success == 1) {Serial.println ("You Got un código correcto"); éxito = 0;} else {playcomplete("0.WAV"); Serial.println ("usted no"); } }

byte check_switches() {static byte anterior [6] estática mucho tiempo [6] byte de lectura; byte presiona; índice byte; presiona = 0;

para (índice byte = 0; índice < 6; ++ índice) {lectura = digitalRead (14 + índice); si (lectura == baja & & anterior [índice] == alta & & millis() - tiempo [índice] > DEBOUNCE) {/ interruptor tiempo presionado [índice] = millis(); Pulsa = index + 1; break;} anterior [índice] = lectura;} / / retorno número de conmutador (1-6) retorno (presionado); }

Reproduce un archivo completo de principio a fin sin pausa. void playcomplete(char *name) {/ / llamar a nuestro ayudante para encontrar y jugar este playfile(name) nombre; mientras que (wave.isplaying) {/ / hacer nada jugando su} / / ahora su hecho jugar}

void playfile(char *name) {/ / ver si el objeto ola está haciendo algo si (wave.isplaying) {/ / así ya jugando a algo, dejar! wave.stop(); / / detener} / / buscar en el directorio raíz y abrir el archivo si (! f.open (raíz, nombre)) {putstring ("no puede abrir archivo"); Serial.Print(Name); retorno; } / / OK leer el archivo y convertirlo en un objeto de onda si (! wave.create(f)) {putstring_nl ("no un válido WAV"); return;} / / ok el tiempo para jugar! iniciar reproducción wave.play(); }

Artículos Relacionados

Caza del tesoro para los adultos (compañero a Arduino la caja de búsqueda del tesoro)

Caza del tesoro para los adultos (compañero a Arduino la caja de búsqueda del tesoro)

Siempre me han gustado películas como tesoro nacional y similares. Que cuenta con un equipo de personas que se están ejecutando por todas partes tratando de resolver un acertijo o una serie de acertijos para conseguir el oro, conseguir que la chica,
Caza del tesoro cumpleaños para adultos Ups

Caza del tesoro cumpleaños para adultos Ups

Caza del tesoro está profundamente arraigada y llama inmediatamente la atención de todos. Así que si una fiesta de cumpleaños necesita alguna acción especial solo seguir este instructable y divertirse enorme.La idea no es seguir un mapa simple - qué
CÓMO planear una divertida caza del tesoro

CÓMO planear una divertida caza del tesoro

Aunque este cofre del tesoro lleno de dulces es una diversión para la mayoría de los niños, el verdadero tesoro está en la caza.De pistas de imagen mezcla de palabras y anagramas, los niños disfrutaron de horas de diversión durante nuestra última bús
Caza del tesoro Navidad

Caza del tesoro Navidad

este es un instructivo sobre cómo configurar una búsqueda del tesoro de Navidad para sus hijos, familia o cónyuge. La caza del tesoro no tiene que ser con un regalo de Navidad, podría ser un regalo de cumpleaños o algo así. Este instructable no cuest
AlleyCats: caza del tesoro en su bicicleta.

AlleyCats: caza del tesoro en su bicicleta.

AlleyCats más generalmente están asociados con mensajeros de la bicicleta fija del engranaje del montar a caballo o bicicletas de una velocidad como que correr alrededor de una ciudad, pasando por varios puestos de control en una tarea también podrán
Diversión de verano del tesoro

Diversión de verano del tesoro

IntroducciónUn par de años varias familias y la mía estaban de vacaciones en una comunidad de playa. Fue uno de esos años cuando llovió todos los días. Los niños estaban con ganas de hacer algo. Habían leído todos los libros de cómic de la casa. Hart
Desconcierto del tesoro abre usando twitter y energía inalámbrica

Desconcierto del tesoro abre usando twitter y energía inalámbrica

Un regalo sorprendente! Mi "víctima" se da tres cajas:Una caja muy pequeña encerrados con cadenas y un candado.Una pequeña caja cerrada con ningunos bolsas de exterior, que está cerrada y tiene una tapa superior reflexiva.Una gran pirata-y la ca
BOLSA de botín de pirata con mapa del tesoro

BOLSA de botín de pirata con mapa del tesoro

me encanta botín pirata, monedas de oro y diamantes brillante.Fui voluntario este verano de 2012, para planificar e implementar algunos proyectos de fabricación de mi comunidad.  Esta es una de las actividades que nos va a hacer.  El rango de edad es
Letterboxing: El juego de la caza del tesoro secreto

Letterboxing: El juego de la caza del tesoro secreto

Letterboxing es una actividad al aire libre increíble (y sorprendentemente antigua) que es genial, muy divertido y justo debajo de la nariz!  En definitiva, es un cuero y buscar el juego de la caza del tesoro jugado por miles de personas en todo el m
Pecho del tesoro

Pecho del tesoro

Este es mi primer Instructable, así que bueno... :-)Obviamente, este es un cofre del tesoro. No tomo fotos como lo hice, pero creo que puedo explicar la mayor parte de.Está hecha de palets.Paso 1: Parte posterior ladoLa mayor parte del pecho es solo
Pudín del tesoro

Pudín del tesoro

Cuando mi hijo mayor era pequeño, le gustaba la leche o el yogur, por lo que le alimenta mucho con leche para ella obtener suficiente calcio. Viene mi segundo niño que amaba a leche y yogurt, pero no come cualquier variedad de alimentos ricos en almi
Caja de la receta del tesoro

Caja de la receta del tesoro

Este instructable tiene raíces en una tarea para la escuela.Necesitábamos hacer algo útil de una caja de cartón, pero mantener la conexión con el contenido de la caja y utilizar la tecnología.Elegí trabajar con la caja de mi licuadora.Como estudiante
Caza del tesoro Arduino

Caza del tesoro Arduino

Siempre me han gustado películas como tesoro nacional y similares. Que cuenta con un equipo de personas que se están ejecutando por todas partes tratando de resolver un acertijo o una serie de acertijos para conseguir el oro, conseguir que la chica,
Cofre del tesoro del pirata

Cofre del tesoro del pirata

cofres del tesoro en el estilo pirata con la tapa redondeada mirar un poco difíciles de hacer. No - aquí está cómo hacer uno de madera vieja que tenga ahí, y sólo necesita una medición. Aquí está: 10 grados. Derecha, usted está listo para ir!Hice el