¿YEAAAUGH, WHHAT? OKKKAY! ¿Botón fácil de Lil Jon (3 / 4 paso)

Paso 3: Cómo funciona:

Que tienes un trabajo Lil Jon Button por ahora. Que te interesaría en cómo funciona el código, así que voy a explicar algunas secciones. Puesto que el código es muy largo, sólo remitiré a secciones secuencialmente.

En primer lugar, aquí hay un montón de incluye. Por supuesto hay los del procesador, así como algunas bibliotecas estándar. Lo que es importante que aquí es la cabecera de archivos que corresponden a las muestras. Esto es una manera de cargar convenientemente los datos del ordenador en el microcontrolador en tiempo de compilación. Escribí un script MATLAB que lee archivos .wav y declara una gran variedad por ejemplo:
int [] mydata = {1, 2, 3, 4};

Luego está la sección:
__attribute__((__interrupt__)) void _T2Interrupt (void)
{

Se trata de la interrupción por Timer 2, que conduce el PWM. Un PWM (modulador de ancho de pulso) genera una forma de onda tipo de análogo cambiando rápidamente el ciclo de trabajo de una forma de onda de pulso. Esto es debido a que las salidas digitales del microcontrolador pueden generar solamente un 0 lógico (que es en el voltaje de tierra) o un 1 lógico (que es en el voltaje de la batería). Si queremos decir, aproximar una tensión entre los podemos utilizar el PWM para activar el pin la mitad del tiempo y lo apague a la mitad del tiempo. Mientras esto se hace muy rápidamente, podemos aproximamos la tensión lo suficientemente bien como para sonar como la forma de onda original.

La función T2Interrupt es un manejador de interrupción por Timer 2. Básicamente, significa que el PWM necesita otra muestra, por lo que leemos otra muestra de la memoria de programa y rellenar en el registro de OC1RS. Se trata de cómo PWM sabe qué tensión para aproximar para la próxima muestra.

__attribute__((__interrupt__)) void _CNInterrupt (void)
{

Esta sección es un manejador de interrupción para la notificación de cambio. La notificación de cambio lanza una interrupción (es decir, se ejecuta la función anterior) cuando uno de los pasadores activó el estado de cambios (va alto -> bajo o viceversa). Esto es cómo detectamos el interruptor está pulsado. Observe que podríamos tu votación aquí, pero la notificación de cambio periférico funciona incluso cuando el microcontrolador está dormido, lo que nos permite ahorrar mucha energía. Lo que hacemos aquí depende de si ya se está reproduciendo un sonido. Si ya se está reproduciendo un sonido y estamos en la primera 375ms de la muestra, simplemente reiniciará el índice de la muestra (tal modo reiniciar la reproducción al principio de la misma muestra). Si no hay ninguna reproducción de sonido o están más allá de la primera 375ms, al azar se elija un nuevo sonido de la 10 y jugar. Esto permite que el Lil Jon Button para repetir la misma muestra pero todavía tiene suficiente comportamiento aleatorio a ser interesante (por ejemplo, Ya-Ya-¡ sí! ESTÁ BIEN!).

void setupHS()
void setupCN()
void setupPWM()

Aquí están algunas funciones de configuración. Esto es bastante complicado y es mejor consultar la hoja de datos para exactamente lo que sucede aquí. Basta con decir la primera establece el reloj del procesador a 66,33 Mhz, la segunda establece la notificación de cambio y la tercera establece el PWM. Para su referencia, la hoja de datos se puede encontrar aquí:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en532296

Finalmente el:
int principal)
{

Que es el bucle principal. Código empieza ejecutando aquí, así que lo primero que hace es configurar los periféricos. Luego el bucle principal no lo mucho. Básicamente sólo espera alrededor de un poco y se va a dormir. Todo el trabajo ocurre porque las interrupciones anteriores se han registrado, por lo que cuando algo necesita atención (por ejemplo el PWM necesita la siguiente muestra), automáticamente se llamará la interrupción correcta. Por lo general cuando el microcontrolador va a dormir, no se ejecuta ningún código. Sin embargo, debido a la notificación de cambio de periféricos ha sido activada, una pulsación en el botón hará que el microcontrolador e inmediatamente esa interrupción del servicio y empieza a jugar una muestra.

Nota final:
Un ingeniero observador podría preguntar, ¿por qué usted no utilizó la función DAC del microcontrolador? De hecho el dsPIC33FJ128GP802 tiene un DAC de audio diseñado para este tipo de cosas. La razón es para simplificar el diseño. Aviso que para conducir un altavoz de un PWM, lo único que se necesita es solo digital interruptor (un BJT en este caso no hay resistencias de polarización). Si en cambio la salida fue un DAC, un amplificador lineal de transistores (con resistencias adicionales) o sería necesario un op-amp. Esto aumenta la complejidad del diseño y el número de parte. Tenga en cuenta que las formas de onda de entrada son simplemente 8kHz 8 bits archivos de audio, un completo CD-calidad DAC es excesiva en términos de calidad de audio, pero aumenta el gasto total.

Otra nota final:
Rango de voltaje de dsPIC33FJ128GP802 es solo 3.0-3.6V. He observado que corren aproximadamente 2.8V sin problemas con este código, pero no se puede garantizar estabilidad de largo plazo. Te recomiendo si es experimentar con el código para utilizar algunas pilas de litio AAA: http://www.amazon.com/Energizer-Ultimate-L92BP-4-Lithium-Battery/dp/B0002DUQDQ . Mantienen 1.5V por mucho más tiempo que AAAs alcalino.

Edit: problema resuelto mediante el uso de PIC18, que desciende a 2V

Artículos Relacionados

Grabar su propio mensaje en botón fácil de grapas

Grabar su propio mensaje en botón fácil de grapas

He visto un par otros web posts acerca de cómo modificar el botón fácil de grapas para reproducir su propio mensaje, pero ahora que ha cerrado Radio Shack, algunos de esos puestos ya no son válidos.Otro método requiere tener una batería de 9 voltios
Botón fácil USB

Botón fácil USB

esos Botones fácil de grapas son impresionantes, pero tienen un pequeño defecto: realmente no hacen nada útil. Es mi objetivo a cambiar eso.Voy a construir un botón fácil de USB. Más todo lo que necesitaba del proyecto de jro y un flickr photoset por
DIY "cualquier cosa" botón fácil Staples (grabación de voz)

DIY "cualquier cosa" botón fácil Staples (grabación de voz)

El botón de grapas "Fácil" es ya un clásico escritorio, pero sería mucho más divertido si dice lo que quieras. Sé que algunas personas ya han hecho hacks como este, pero esto es menos costoso que muchos de ellos. También, Staples ha cambiado rec
Concurso sistema de zumbador mediante botón fácil grapas

Concurso sistema de zumbador mediante botón fácil grapas

**actualización** ha llegado a mi atención que la Junta Directiva de la corriente de grapas fácil botón ha cambiado con los años y ya no es el mismo que usé para este Instructable nuevo en 2009. Debido tanto a limitaciones de tiempo y el hecho de que
Cómo hacer aretes de botón fácil

Cómo hacer aretes de botón fácil

Hoy he filmé un video rápido DIY. Es un divertido proyecto. Es como hacer aretes de botón fácil en menos de 2 minutos. Podemos ahorrar mucho dinero haciendo nuestros propios pendientes.❤Please Suscríbete a mi channel❤!!!https://www.youtube.com/User/M
Convertir tu computadora en un Control de botón fácil Staples (tm)

Convertir tu computadora en un Control de botón fácil Staples (tm)

Este proyecto está inspirado por varios existentes hacks de botón fácil realmente creativos que he visto en Instructables.  Este es un poco más barato que los otros.  No es inalámbrico, ni un espectáculo de juego y toma un poco más trabajo, pero podr
Hacer un Tweet botón fácil lo duro

Hacer un Tweet botón fácil lo duro

hay varias maneras de hacer un tweet de microcontrolador. Los métodos fáciles están bien cubiertos en instructables otros.Conectar a un equipo que ejecuta un python script o similar.Conectar a un router hackeado (Niza - sabes quien eres).Utilizando u
Hacer un Wireless botón fácil

Hacer un Wireless botón fácil

Ah, las grapas ubicuas "Botón fácil".  Hay otros botones de gran cúpula, pero el botón de grapas tiene la particularidad de no necesitar un panel para ser montado en.  Sólo tiene una buena base plana.  Así que ¿por qué no liberar totalmente de c
Botón fácil de peluche personalizado

Botón fácil de peluche personalizado

con mensaje personalizado del día de la madre o cualquier mensaje. ¿Tienes la voz de alguien que sólo una madre puede amar y necesita ser escuchado una y otra vez? Este es el regalo perfecto para dar a alguien que lo agradeceria un mensaje personaliz
Botón fácil de BLE

Botón fácil de BLE

Este instructable le mostrará los pasos para crear un botón BLE.Paso 1: Lo que se necesitaAzufier (ver mi ultimo post para más información)Escudo simple botónMaciOS dispositivoPaso 2: Hacer botón escudo Escudo de Azufier de construcción no es tan dif
La última versión de grapas 'Fácil' botón de hacking y construir una herramienta de recordatorio de actividad física simple

La última versión de grapas 'Fácil' botón de hacking y construir una herramienta de recordatorio de actividad física simple

Yo estaba siguiendo este instructable para hackear el Botón fácil Staples y construir una herramienta que me recuerda cada 15 minutos para ser físicamente activo. El botón que he comprado de grapas tenía circuitos internos que fue algo distinto al ex
Ampliar vocabulario fácil botón

Ampliar vocabulario fácil botón

el botón fácil está disponible desde grapas por $5 y dice simplemente: "eso fue fácil" cada vez huelen. El botón fácil se construye bien para el precio, pero requiere un poco de trabajo y alrededor de $10 valor de las piezas para que sea registr
Fácil botón/WalMart botón/Whoopee cojín Triple Hack++

Fácil botón/WalMart botón/Whoopee cojín Triple Hack++

este instructable muestra cómo tomar un botón fácil, levantar el audio de él, entonces tomar un electrónico whoopee cojín levantar el audio de esa y luego combinar los dos clips de sonido utilizando el editor de sonido gratis, Audacity, añadiendo alg
Impresionante botón y luego algunos.

Impresionante botón y luego algunos.

Muchos de ustedes probablemente han visto el botón impresionante realizado por Matt Richardson de hacer revista. Si no es aquí su video que se hizo muy bien y fue la inspiración de mi proyecto.Me gustó la idea de tener un botón para presionar por una