Reproducción de sonido con una picaxe

0

¿Hay alguna forma de usar un PICAXE (08M2, para ser precisos) para reproducir un archivo de sonido pequeño (no pitidos y zumbidos, sino sonido real), quizás cargado desde un chip EEPROM i2c? Estoy pensando en algo similar al ThinkGeek EvilTron: dos o tres segundos de calidad decente, sonido de altavoz mono. Si no es así, ¿hay un chip esclavo pequeño / barato que pueda lograr esto? No estoy buscando algo lujoso o complejo, lo suficiente como para formar un EvilTron hecho en casa. Gracias por cualquier puntero.

Aquí hay un enlace al EvilTron mencionado anteriormente, para que sepa: EvilTron

(también tenga en cuenta que tengo la intención de utilizar altavoces muy por debajo de los límites actuales de PICAXE, por lo que no es necesario un circuito amplificador)

    
pregunta Chris

2 respuestas

2

(1) La forma 'fácil'

Agregue esta RAMTRON FM25V02 32k x 8 Memoria no volátil IIC

Puede usar codificador BTC de Roman Black para convertir archivos WAV en archivos en serie de 1 bit que el procesador puede enviar.

Discusión del usuario

Papel de fondo típico para PCM & amigos - 1974 - lo suficientemente antiguo como para que el hardware de vanguardia fuera casi trivial.

Artículo de Circuit Cellar inspirado en Roman Roman para la codificación de voz en un 89C4051

Relevantish

respondido por el Russell McMahon
1

Puede haber bibliotecas que pueden ayudarte a reproducir sonidos (básicamente, un archivo de encabezado con la frecuencia en hercios para cada nota). Es posible que desee considerar hacer esto para ahorrarse la molestia de comprar un nuevo chip. [He adjuntado un código de ejemplo, aunque para el arduino a continuación, debería ser muy fácil de trasladar]

De lo contrario, es posible que desee considerar invertir en un SoundPAL. Aunque esto fue diseñado para el sello BASIC, es muy fácil interactuar con él y, en el peor de los casos, el intercambio de bits siempre funciona :) Solo tiene que enviar las notas y las reproducirá en el zumbador incorporado. También tiene una variedad de melodías almacenadas en la EEPROM que puedes tocar.


enlace


// define the frequencies for each note
#define c 261
#define d 294
#define e 329
#define f 349
#define g 391
#define gS 415
#define a 440
#define aS 455
#define b 466
#define cH 523
#define cSH 554
#define dH 587
#define dSH 622
#define eH 659
#define fH 698
#define fSH 740
#define gH 784
#define gSH 830
#define aH 880
//this function will play each note, so you just call the fn beep for each note to be played
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)
{
   int x;    
    long delayAmount = (long)(1000000/frequencyInHertz);
    long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
    for (x=0; x less than loopTime; x++){
        digitalWrite(speakerPin,HIGH);
        delayMicroseconds(delayAmount);
        digitalWrite(speakerPin,LOW);
        delayMicroseconds(delayAmount);
}
delay(20); //to separate the notes
}

PD: no pude copiar el código exacto aquí, así que si alguien puede corregir el menos que en < por favor hazlo.

    
respondido por el Shungun

Lea otras preguntas en las etiquetas