Paso 2: Cómo funciona
Cuando empecé este proyecto la parte más difícil fue encontrar el momento para almacenar un valor y compararlo con el valor actual de IR para determinar el tipo de gesto. Al principio guardan un valor cada 100ms, pero es muy inexacto. Tenía una gran cantidad de falsos positivos, especialmente al hacer un gesto "hacia abajo". Así que hice una forma de ajustar la sensibilidad basada en el valor más alto. Eso no funciona bien.
Estaba golpeando mi cabeza contra la pared. Pasé 3 semanas modificar y probar el código hasta que finalmente vino a mi mente la mejor manera de almacenar estos valores: arreglos de discos. El retardo necesario para apagar completamente el IR LED (2ms) la demora necesaria para activarlos (1ms) convierten el intervalo perfecto para almacenar los valores de IR (100 valores por arreglo de discos, 1 valor por 3ms, 300ms de los valores almacenados en cada arreglo de discos). Mediante este método el proceso de detección de gestos ha mejorado mucho. Allí no son ningún falsos positivos ahora y perfectamente reconocido el gesto "hacia abajo". Este fue el objetivo principal: hacer un sensor confiable gesto manteniendo barato y fácil de construir.
La forma en que funciona es la siguiente: el Arduino Lee todos los sensores y, si cualquier valor es mayor que 0 entonces se almacena en las matrices. Cuando hay dos o más elementos en los arreglos de discos de Arduino comienza buscando un patrón en los valores de IR para determinar el tipo de gesto. Por ejemplo: si las parte superior izquierda e inferior izquierda IR sensores detectan algo entonces booleanos "rising_TL" y "rising_BL" será verdad y el gesto esperado será "este". Después de eso, si los sensores superior derecha e inferior derecha IR detectan algo pero la TL y BL no (por lo que "decreasing_TL" y "decreasing_BL" será ciertos) entonces el gesto es "este" y el Arduino esto envía por el puerto serie.
Si usted no entiende este intento imaginar su mano moviéndose de izquierda a derecha. Cuando está por encima de los sensores izquierdos que se reflejará mucho de luz IR, así detectan que hay algo por encima de ellos. Cuando Mantenga moviendo la mano por encima de los derecha sensores detectan que hay algo por encima de ellos, pero los izquierda sensores no detectan nada. Basado en esto el Arduino puede decir con precisión el tipo de gesto realizado.