Mi sistema se compone de los siguientes componentes:
• 1 Arduino (la que se utiliza es un Arduino Mega 2560)
• 1 Sensor piezoeléctrico
• 1 Mega-ohmio Resistor
• Tablero que contiene 3 LEDs
• 1 Cable USB A-B
• 1 ordenador portátil ejecuta Visual Studios 2010 y iTunes
El resistor del ohmio de 1Mega está presente para evitar que el sensor piezoeléctrico de dañar el puerto de entrada de Arduino. Los LEDs ofrecen comentarios de los usuarios. El LED naranja parpadea cada vez que el usuario golpea el sensor, lo que demuestra que el sistema está registrando activamente el grifo. El LED rojo parpadea cuando el usuario golpea un patrón que no es reconocido. Además, el LED verde parpadea cuando el patrón de un usuario de grifos es aceptada por el sistema.
El sistema utiliza tanto es alimentado por un cable USB conectar el Arduino y el portátil.
SOFTWARE (ARDUINO)
El software que se ejecuta en el Arduino es una versión suavizada de C++, inspirado en el lenguaje de programación de procesamiento. Fue escrito usando el estándar IDE de Arduino que está disponible en línea.
El programa es relativamente simple. El sistema contiene una serie de patrones almacenados tap que puede combinarse. El sistema gira en un bucle, esperando el primer grifo para detectarse. Una vez que esto ocurre, el sistema marca la hora actual y espera la siguiente llave. Para cada tap consecutivo, el sistema guarda el intervalo de tiempo entre ésta y la anterior toma. Este proceso continúa hasta que se supera el número máximo de llaves, o se ha detectado ningún grifo durante un segundo. Luego se normalizan los grifos. Esto permite para Grifos en diferentes tempos para coincidir con el mismo patrón. Normalización se realiza dividiendo cada intervalo almacenado por el intervalo más largo y multiplicando por 100, de tal modo transformando cada intervalo de un entero entre 1 y 100.
Patrones de grifo tiene tres criterios importantes para resolver si se considera que coincidan con un patrón almacenado:
1. ambos patrones deben contener el mismo número de grifos
2. un intervalo de usuario no puede diferir más del 25% del correspondiente intervalo almacenado
3. el promedio de todos los intervalos no difiera en más del 15% del promedio de los intervalos almacenados.
Si se cumplen todas estas condiciones, el sistema acepta el patrón. El sistema transmite el índice de ese patrón como un único byte sobre la conexión serial proporcionada por el cable USB a un programa de escuchado en la laptop (en nuestro caso, un programa C# conectado con iTunes). Una vez que se ha transmitido el byte, el sistema vuelve a la espera de un nuevo modelo de grifo del usuario.
Los patrones de corriente aplicados actualmente son:
• Un solo toque
• Dos grifos
• Tres grifería uniforme
• Cuatro grifos uniforme
• Un toque lento seguido de dos grifos rápidos
• Dos grifos rápido seguidos de un toque lento
• El patrón de "Afeitado y un corte de pelo, dos pedacitos"
Esta lista de patrones es fácilmente personalizable y extensible una vez que uno se vuelve familiar con cómo están representados los patrones.
SOFTWARE (PORTÁTIL)
Decidí escribir la aplicación del lado del ordenador portátil en C# porque he tenido experiencia anterior escritura interfaces personalizadas con Arduinos en C#. Esto podría fácilmente aplicarse en otros idiomas, como el lenguaje soporta comunicación serial sobre puertos COM.
El programa C# utiliza marco XNA de Microsoft que, mientras que normalmente utiliza para desarrollar juegos, proporciona un flujo de programa basado en el lazo, agradable adecuado para establecer interfaz con Arduinos y mostrar una interfaz gráfica visual.
Inicia el programa abre una conexión serie con el Arduino y la creación de una interfaz a iTunes. Una vez que éstos se establezcan, el programa sondea continuamente la conexión serie de bytes. Si hay bytes para ser leído, el programa lee cada uno como un entero y ejecuta el comando correspondiente. Por ejemplo, si el byte contiene el número 1, luego el programa alterna si iTunes está reproduciendo o en pausa. Puesto que un byte contiene 32 valores, un total de 32 órdenes individuales puede ser emitido desde el Arduino para el programa C#. En esta demostración básica, sólo seis comandos realmente se implementan.
Los números recibidos, comandos y patrones asociados son los siguientes:
0. seleccionar visualizaciones – "Afeitado y un corte de pelo, dos pedacitos"
1. conmutar reproducir/pausa, toque
2. siguiente canción – dos grifos
3. anterior canción-tres grifos uniforme
4. avance rápido – un toque lento, seguido por dos grifos rápidos
5. rebobinado – dos grifos rápidos seguidos de un toque lento
6. alternar shuffle – cuatro grifos uniforme
Interfaces de C# con iTunes a través de su API de COM. Mi programa también muestra una GUI básica que proporciona información sobre estado de iTunes, la posición dentro de la canción actual y nombre de la pista actual, artista y álbum.