Paso 8: Arquitectura y programación
Aunque pude han impulsado LEDs de cada tablero desde el microcontrolador local, la arquitectura que elegí tiene la cadena de LED y el sensor de matriz completamente separados. Esto fue por una razón muy pragmática: Si por alguna razón no he podido conseguir el sensor de matriz o comunicación multiprocesador funcionando bien, seguiría teniendo una pantalla esférica perfectamente gran! En cualquier caso, todo salió bien. Una desventaja de esta arquitectura es que necesita una computadora central para controlar los LEDs en respuesta a eventos de sensor (a diferencia de una arquitectura local donde microcontrolador de cada tablero luz el LED local con no es necesario la comunicación de datos). Elegí un Raspberry Pi porque sabía que los controladores serie manejan mi comunicación de alta velocidad y no estándar 250 kbaud bien, esto no es el caso de muchos sistemas Linux. A diferencia de la BeagleBone también tiene 4 puertos USB por lo que he podido conectar la interfaz en serie RS-485 y la Junta de Fadecandy que impulsa a los LEDs, así como un adaptador de wifi USB sin un hub. Esto es crucial ya que todo este engranaje debe eventualmente caber en el interior hueco de la base.
Por lo que la arquitectura general funciona así: el ordenador (Raspberry Pi) consulta repetidamente cada PCB para sus valores de los sensores en una redondo-robin manera. Porque cada PCB sólo luces su sensor IR LED en respuesta a una consulta, se elimina la interferencia óptica entre canales. Después se lee el estado de todos los sensores, el patrón de LED se calcula en respuesta y enviado a través de OPC a la Junta de Fadecandy.
Todavía tengo mucho trabajo que hacer en la programación e interactividad: ahora el Ommatid está ejecutando un programa glorioso escrito en Python. En el futuro estará poniendo la consulta de sensor y LED generación código en procesos separados para mejorar la latencia y podría poner la parte superior y esferas de fondo en separan autobuses de RS-485 a doble rendimiento. También tengo ideas valientes (y algunos avances en la simulación) de detección más sofisticados gestos como pellizcar y globo-que hace girar (para trackball-como respuesta) así como mediante el gráfico de conexión para simular patrones reactivos. Si puedo calcular el Laplaciano de la malla triangular, puedo simular la ecuación de onda y los patrones de reacción difusión en respuesta al tacto. También me gustaría investigar haciendo el Ommatid generar eventos de OSC por lo que puede ser utilizado como regulador de la musical. Imaginar una actuación donde Ableton es controlada con un Ommatid en lugar de un ordenador portátil!