Arduino Personal con capucha banda sonora (5 / 6 paso)

Paso 5: código

La mayor parte del código es para el WaveShield, basado en http://www.ladyada.net/make/waveshield/
Hay varios ejemplos de botones múltiples alrededor - utilicé un mash-up basado en Rayshobby blog http://rayshobby.net/?p=16 con un poco de este uno, lanzado.
Código de selección aleatoria para el último botón es adaptada de www.arduino.cc/en/Tutorial/Blink y www.arduino.cc/en/Reference/Random.

#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"

int buttonPinR = 0;  Botones de brazo derecho en el pin analógico 0
int buttonValueR = 0;
int buttonPinL = 1;  Brazo izquierdo botones pin analógico 1
int buttonValueL = 0;

randChoose largo = 0; Inicializar el elemento aleatorio
largo randNumber;

Tarjeta SdReader;    Este objeto contiene la información de la tarjeta
FatVolume vol;    Contiene la información de la partición en la tarjeta
FatReader raíz;   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

int wasplaying = 0;
rVal int;

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;
extern int * __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);
}

void setup()
{
Serial.Begin(9600);
Serial.println ("onda prueba!");
pinMode (2, salida);
pinMode (3, salida);
pinMode (4, salida);
pinMode (5, salida);
pinMode (13, salida);

randomSeed (analogRead (1)); generador de números aleatorios de la configuración

Si (! card.init(true)) {//play con spi de 4 MHz si 8MHz no funciona para usted
Si (! card.init()) {//play con spi de 8 MHz (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!
}

permiten 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
Si (vol.init (tarjeta, parte))
rotura;                             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);                            entonces 'detener': ¡ no!
}

Permite decir que el usuario lo que 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);                             entonces 'detener': ¡ no!
}

¡ UF! Llegamos pasado las partes difíciles.
putstring_nl("Ready!");

}
Botones de calibrado con un resistor de 10K en el pin de 5v con una batería de 9v conexión con el enchufe de alimentación de Arduino.
Utilice los valores de su bosquejo lectura analógica para el valor asignado a cada botón del soporte. Tuyo puede variar de los asignado aquí.

Brazo derecho botones pin 0

void loop() {}
buttonValueR = analogRead(buttonPinR);
Si (buttonValueR > 645 & & buttonValueR < 660) {}
playcomplete ("R1. WAV");
}
Delay(25); Siempre es bueno un poco cuando leyendo entradas las cosas lento

Si (buttonValueR > 225 & & buttonValueR < 240) {}
playcomplete ("R2. WAV");
}

Delay(25);

Si (buttonValueR > 165 & & buttonValueR < 185) {}
playcomplete ("R3. WAV");
}

Delay(25);

Si (buttonValueR > 325 & & buttonValueR < 345) {}
playcomplete ("R4. WAV");
}

Delay(25);

Si (buttonValueR > 495 & & buttonValueR < 515) {}
playcomplete ("R5. WAV");
}

Brazo izquierdo botones pin 1

buttonValueL = analogRead(buttonPinL);
Si (buttonValueL > 645 & & buttonValueL < 660) {}
playcomplete ("L1. WAV");
}
Delay(25);

Si (buttonValueL > 225 & & buttonValueL < 245) {}
playcomplete ("L2. WAV");
}

Delay(25);

Si (buttonValueL > 165 & & buttonValueL < 185) {}
playcomplete ("L3. WAV");
}

Delay(25);

Si (buttonValueL > 325 & & buttonValueL < 350) {}
playcomplete («L4. WAV");
}

Delay(25);

Aleatoria el efecto de sonido cuando se presiona el último botón en el brazo izquierdo

Si (buttonValueL > 495 & & buttonValueL < 515) {}
randChoose = al azar (1, 20); generar la posibilidad de elegir entre 1 y 20
interruptor (randChoose)
{
caso 1:
playcomplete ("RAND1. WAV");
rotura;
caso 2:
playcomplete ("RAND2. WAV");
rotura;
caso 3:
playcomplete ("RAND3. WAV");
rotura;
caso 4:
playcomplete ("RAND4. WAV");
rotura;
caso 5:
playcomplete ("RAND5. WAV");
rotura;
caso 6:
playcomplete ("RAND6. WAV");
rotura;
caso 7:
playcomplete ("RAND7. WAV");
rotura;
caso 8:
playcomplete ("RAND8. WAV");
rotura;
caso 9:
playcomplete ("RAND9. WAV");
rotura;
caso 10:
playcomplete ("RAND10. WAV");
rotura;
caso 11:
playcomplete ("RAND11. WAV");
rotura;
caso 12:
playcomplete ("RAND12. WAV");
rotura;
caso 13:
playcomplete ("RAND13. WAV");
rotura;
caso 14:
playcomplete ("RAND14. WAV");
rotura;
caso 15:
playcomplete ("RAND15. WAV");
rotura;
caso 16:
playcomplete ("RAND16. WAV");
rotura;
caso 17:
playcomplete ("RAND17. WAV");
rotura;
caso 18:
playcomplete ("RAND18. WAV");
rotura;
caso 19:
playcomplete ("RAND19. WAV");
rotura;
caso 20:
playcomplete ("RAND20. WAV");
rotura;
}
Delay(25);

}
}

Reproduce un archivo completo de principio a fin sin pausa.
void playcomplete(char *name) {}
llamar a nuestro ayudante para buscar y reproducir este nombre
playfile(Name);
mientras (wave.isplaying) {}
no hacer nada durante la reproducción de su
}
su hecho reproduciendo
}

void playfile(char *name) {}
ver si el objeto ola está haciendo algo
Si (wave.isplaying) {/ / así que ya está reproduciendo algo, stop!
Wave.STOP(); Basta
}
Buscar en el directorio raíz y abre el archivo
Si (! f.open (raíz, nombre)) {}
putstring ("no puede abrir archivo"); Serial.Print(Name); retorno;
}
Leer bien el archivo y convertirlo en un objeto de onda
Si (! {wave.create(f))}
putstring_nl ("no un válido WAV"); retorno;
}

OK el tiempo para jugar! iniciar la reproducción
Wave.Play();
}

Artículos Relacionados

¿Cómo hacer una banda sonora de película con el más básico de los programas

¿Cómo hacer una banda sonora de película con el más básico de los programas

Ever quería hacer una banda sonora para una película casera para uso personal pero no tenía acceso a una computadora con programas como iTunes o RealPlayer? Con este tutorial le mostrará cómo crear un CD usando el más simple de los programas, Windows
Harry Potter Ravenclaw túnica con capucha

Harry Potter Ravenclaw túnica con capucha

Accio su propio Harry Potter Robe sudadera con capucha para que Hogwarts House el sombrero seleccionador ha considerado pertenecen. Esto es para aquellos destinados a Ravenclaw con su vestimenta oscura forrada azul y cresta distintiva.Este proyecto e
Hacer una amistad encontrar E-Textile monstruo sudadera con capucha con Neopixels

Hacer una amistad encontrar E-Textile monstruo sudadera con capucha con Neopixels

Tiene que abrigarse este invierno, y qué mejor manera de hacerlo que to encontrar a más amigos para abrazar con durante los meses de nieve. El monstruo sudadera con capucha encontrarán a todos los amigos que necesita pruebas con sus pata sensibles al
El reloj de la historia: Arduino LCD con sensores de la tapa

El reloj de la historia: Arduino LCD con sensores de la tapa

Este es aún otro Arduino LCD reloj, pero con un giro; Este reloj sabe algunas fiestas y cumpleaños, realizar cálculos sobre la marcha de a qué edad una persona es y entonces Mostrar la información en la pantalla LCD. Me inspiré a hacer este reloj por
Hacer un patrón y coser un chaleco con capucha

Hacer un patrón y coser un chaleco con capucha

este instructable le mostrará cómo hacer un patrón de tu pedazo de la ropa y luego hacer otro sin tener que ripear todas las costuras.Este proyecto puede realizarse fácilmente en un día si usted conoce bien su máquina de coser. Si usted es nuevo a co
Manta con capucha incorporada

Manta con capucha incorporada

hace dos años hice una bandera gigante para mostrar mi apoyo a los Tigres de Wests usando material de forro polar (consulta la bandera en uso en la figura 2). Mi novia ama absolutamente la bandera, no por su amor por los poderosos tigres pero porque
LED de movimiento Tilt: Con capucha

LED de movimiento Tilt: Con capucha

En este tutorial voy a mostrar cómo hacer un movimiento de inclinación LED con capucha.Cuando pones la capota, un triste emoji aparece en la parte posterior con LEDs. Representa cómo personas refugian ellos mismos o no desean ser visto cuando se sien
Elegante sudadera con capucha

Elegante sudadera con capucha

Construir su propia sudadera con capucha inteligente con una pantalla de LED de 16 x 32 que se conecta vía bluetooth a su teléfono y puede mostrar texto introducir o mostrar tweets con un hashtag específico de twitter.ComponentesRetal de tela más gra
Hermosa y caliente: con capucha capas y mantos.

Hermosa y caliente: con capucha capas y mantos.

Capas o mantos son sorprendentes!Pueden ser formal y elegante, pueden ser rugoso y no mucho más que un poncho.Son fáciles de hacer y hacer una declaración,Ideal para disfraces, disfraces o guardar caliente!Y,¿Nos hemos estado viendo 'Una vez'... los
Banda sonora de una película de

Banda sonora de una película de

uno de los mayores activos para cualquier cineasta sería la banda sonora, si es una buena banda sonora, con grandes canciones e igualmente gran colocación, puede hacer que una ya excelente película aún mejor.Bandas sonoras aparecen en todas las pelíc
Combate con capucha traje Ghillie - para Airsoft, caza o Apocalipsis...

Combate con capucha traje Ghillie - para Airsoft, caza o Apocalipsis...

Tener una gran cantidad de tiempo libre, disfrutando de airsoft y haciendo cosas, quería crear un traje Ghillie. Sin embargo, teniendo una acción de tornillo roto llena dejándome apenas un medio automático que el estilo de juego que tengo que jugar i
Cómo hacer una estrella doble con una banda elástica!!!

Cómo hacer una estrella doble con una banda elástica!!!

Cuando era más joven, solía jugar con bandas de goma cada vez que tenía que ir en los largos paseos en coche. Aprender a crear diseños de goma fue una manera para mí matar tiempo y aburrimiento. Que esto puede hacer lo mismo para ti si eres un niño o
Modificación de Wiimote de inalámbrica para las personas con discapacidad

Modificación de Wiimote de inalámbrica para las personas con discapacidad

Este Instructable adicional se basa en la versión anterior mediante la incorporación de botones sin hilos separado del mando a distancia. Se creó también una bandeja de regazo con una capa de velcro para permitir que el usuario colocar los botones ex
¿remalladora hecho elf con capucha

¿remalladora hecho elf con capucha

alguna vez has querido reciclar un suéter viejo?por qué más de unami amigo me desafió a hacerlocon este instructivo usted puede hacer una sudadera con capucha para rápido y fácilsiempre se hace con una máquina como si porque el material es elástico y