Paso 4: Diseño de Software
El objetivo de esto era que la torre de la campana de la PC. De Arduino USB--> Serial link era la forma ideal para ello.
El arduino recibe datos seriales de la PC que corresponde a qué notas para jugar. El protocolo es sencillo; las notas están todas en sus equivalentes en texto ASCII. También hay una serie numérica como un retardo variable.
Por ejemplo, el PC envía: "cde2fgABC" y el Arduino toca campanas restos 1,2,3, por medio de una nota y luego toca campanas 4,5,6,7 y 8.
Punta del sombrero a John Plocher para su proyecto ServoBells, el cual en parte inspiró este proyecto.
Código del lado del Arduino:
El código de arduino recibe los datos serie, decodifica que nota o demora para jugar y luego activa los solenoides apropiadamente.
Hablando de eso. Asegúrese de que su código está diseñado para que los solenoides no se mantienen!. Si dejas un solenoide en por error, se derretirá . Lo solucioné esto haciendo mi bloque de rutinas de nota hasta que el solenoide esté apagada, en lugar de la interrogación constante, etc..
Código del lado del PC:
El programa cliente fue escrito en C#. Tiene botones para cada nota individual, así como botones para las melodías preprogramadas. Los datos de la nota se envían al puerto serie.
Se adjunta el código fuente de todo.
Margen de mejora:
- Notas polifónicas
He dejado fuera la posibilidad de dos notas para reproducirse al mismo tiempo, como no creo que cualquier música capaz de caber en 1 octava les requeriría. Puede además disparar más de un solenoide
- Matar a la cola
La PC envía grandes frases de notas hasta el arduino, que luego lo procesa hasta que se vacía la cola. Sin embargo para grandes canciones esto puede ser agotador y puede ser deseable para poder interrumpir una canción de marcha. Esto se podía lograr por tener algunas otras letras en la frase de la serie (por ejemplo, ' x') como un código para vaciar el buffer.