Este es un proyecto muy simple y también es mi primera Instructables...
Descripción del proyecto:
Una caja de sonido que reproduce un archivo de mi voz y permite al espectador a bajar el tono de mi voz mientras se reproduce el archivo.
Qué motivó la fabricación de la pieza:
Un creciente interés en plataformas educativas tales comunidades Instructables y fabricante para compartir recursos y capacidades - fomento de la curiosidad. Estoy interesado en las maneras en que tecnología es utilizada, compartida, novelada y aplicada. Elegí para centrarse en la ficción acústica como punto de partida para una conversación en la Agencia: coloqué un diagrama sobre el "jugador" que trazó de manera relativamente precisa de los efectos fisiológicos, mitos y usos que se derivan del sonido (tono y volumen) dependiendo de su descenso en Hz y de intensidad en dB; con todo, desde frecuencia zona correspondiente para fantasmas avistamientos, la nota marrón, de Vladimir Gavreau arma sonic y acústica de pruebas, el sonido de un bebé llorando, granadas, motos, voz humana, etc.
Lista de partes:
1. waveshield de adafruit: http://www.adafruit.com/products/94
2. arduino uno
3. perf board
4. EL LED
5. pulsador
6. 10 K resistencia ohm (marrón negro naranja dorado)
7. cualquier altavoz pequeño / utiliza un altavoz recargable tecnología & go: http://www.drugstore.com/tech-and-go-rechargable-portable-speaker-blue/qxp460069
8. cuadro de proyecto
9. caja para altavoces
10. Sugru http://sugru.com
11. audio espuma / la espuma
12. soldador
Primer paso:
Protector de la onda de la soldadura y formatear tarjeta SD en consecuencia. Gran tutoriales aquí:
http://www.robotshop.com/content/PDF/Adafruit-Wave-Shield-User-Guide.pdf
Tenga en cuenta que la biblioteca usada en este tutorial ahora es obsoleta. Se refieren a gitHub para descargar la nueva WaveHC biblioteca http://code.google.com/p/sdfatlib/downloads/list
Segundo paso:
Circuito:
Porque quería hacer mi pequeño reproductor tan intuitiva como sea posible, decidí añadir un botón de 'play' que sólo jugaría el archivo (no interrumpirlo), una luz que se encienda sólo mientras se está reproduciendo el archivo y un potenciómetro para disminuir la frecuencia de muestreo del archivo mientras se está reproduciendo.
Código:
/*................... Adafruit SampleRateMod.pde ejemplo modificado para usar WaveHC.
Archivo de juegos cuando se presiona el botón. Disminuye la frecuencia de muestreo con bote en analógico 0.
Muchas gracias a WaveHC Library, Adafruit, David Casey, Tom Jennings!!!!!!
Proyecto: Nivel en DB
última modificación el 30 de abril de 2013... * /
#include
#include
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 directorio de raíz de volúmenes
Archivo FatReader; Este objeto representa el archivo WAV
Ola WaveHC; Este es el único objeto (audio) de la onda, puesto que sólo jugaremos uno a la vez
/*
* Definir macro para mensajes de error en memoria flash
*/
#define error(msg) error_P(PSTR(msg))
int buttonValue;
const int ledPin = 15; Esto es realmente analógico 1 en arduino
void setup() {}
pinMode (ledPin, salida);
Serial.Begin(9600);
Serial.println ("onda prueba!");
trate de card.init(true) si se producen errores en el protector de la onda V1.0
Si (! {card.init())}
error ("tarjeta init. no se pudo!");
}
permiten optimizar la lectura - algunas tarjetas pueden tiempo de espera
card.partialBlockRead(true);
Si (! {vol.init(card))}
error ("no hay partición!");
}
Si (! {root.openRoot(vol))}
error ("no pudo abrir raíz");
}
putstring_nl ("archivos encontrados:");
root.LS();
}
declarition hacia adelante
void playcomplete (FatReader & archivo);
void loop() {}
uint8_t i, r;
nombre c, Char [15];
dir_t dir;
buttonValue = digitalRead(7);
root.Rewind();
desplazarse por los archivos en el directorio
mientras (root.readDir(dir) > 0) {}
sólo juego. Archivos WAV
Si (! strncmp_P ((char *) & dir.name[8]. Continuar PSTR("WAV")));
Si (! file.open (vol, dir)) {}
putstring ("no se puede abrir");
printEntryName(dir);
Serial.println();
continuar;
}
putstring ("\n\rPlaying");
printEntryName(dir);
Serial.println();
Si (buttonValue == HIGH) {}
playcomplete(File);
}
digitalWrite (ledPin, LOW); debe estar fuera de la f para encender led apagado
}
}
/////////////////////////////////// HELPERS
/*
* imprimir mensaje de error y detener la
*/
void error_P (const char * str) {}
PgmPrint ("Error:");
SerialPrint_P(str);
sdErrorCheck();
while(1);
}
/*
* imprimir mensaje de error y detener si error E/S SD, ideal para depuración!
*/
void sdErrorCheck(void) {}
Si (! card.errorCode()) retorno;
PgmPrint ("\r\nSD I/O error:");
Serial.Print(Card.ErrorCode(), hexagonal);
PgmPrint (",");
Serial.println(Card.errorData(), hexagonal);
while(1);
}
int16_t lastpotval = 0;
#define histéresis 3
/*
* reproducir el archivo con los cambios de velocidad de muestra
*/
void playcomplete (FatReader & archivo) {}
potval de int16_t;
newsamplerate de uint32_t;
Si (! {wave.create(file))}
putstring_nl ("no un válido WAV");
retorno;
}
Wave.Play();
Si (wave.isplaying) {}
digitalWrite (ledPin, HIGH);
}
mientras (wave.isplaying) {}
potval = analogRead(0);
Si (((potval-lastpotval) > histéresis) || ((lastpotval-potval) > histéresis)) {
putstring ("pote =");
Serial.println (potval, DEC);
putstring ("tickspersam =");
Serial.Print (wave.dwSamplesPerSec, DEC);
putstring ("->");
newsamplerate = wave.dwSamplesPerSec;
newsamplerate * = potval;
newsamplerate = 512; queremos 'split' entre acelerado y frenado.
Si {} (newsamplerate > 24000)
newsamplerate = 24000;
}
Si (newsamplerate < 1000) {}
newsamplerate = 1000;
}
wave.setSampleRate(newsamplerate);
Serial.println (newsamplerate, DEC);
lastpotval = potval;
}
Delay(10);
}
sdErrorCheck();
File.Close();
}
Tercera parte:
Ajustar las agallas para el diseño de su gabinete. Perforaciones en consecuencia. Porque estoy usando un altavoz pequeño, puedo energía la cosa entera apagado de una batería de 9V que sólo hace más fácil de instalar como fuente de energía es un tema constante.
Aquí hay un enlace a la documentación del trabajo:
https://vimeo.com/66703542