Étape 2: Comment ça marche
Quand j’ai commencé ce projet la partie la plus difficile était de trouver le moment pour stocker une valeur et la comparer avec la valeur actuelle de IR pour déterminer le type de geste. Dans un premier temps, j’ai sauvé une valeur chaque 100ms, mais c’était très imprécis. Elle avait beaucoup de faux positifs, surtout quand vous faites un geste « bas ». J’ai donc fait un moyen d’auto régler la sensibilité basée sur la valeur plus élevée. Qui ne fonctionne plus.
J’ai été cogner ma tête contre le mur. J’ai passé 3 semaines modifier et tester le code jusqu'à ce qu’il est venu enfin à mon avis la meilleure façon de stocker ces valeurs : baies. Le délai nécessaire pour désactiver complètement les LEDs IR (2ms) plus le délai nécessaire pour les allumer (1ms) font l’intervalle parfait pour stocker les valeurs IR (100 valeurs par baie, 1 valeur par 3ms, 300ms des valeurs stockées dans chaque tableau). En utilisant cette méthode le processus de détection de mouvement s’est beaucoup améliorée. Il n’ya pas de maintenant tous les fausses positifs et le geste « bas » est parfaitement reconnu. C’était l’objectif principal : faire un capteur de mouvement fiable tout en la gardant bon marché et facile à construire.
Le mode de fonctionnement est le suivant : l’Arduino lit tous les capteurs et que, si une valeur est supérieure à 0, puis il est stocké dans les baies. Quand il y a deux ou plusieurs éléments dans ces tableaux l’Arduino commence à la recherche d’un modèle dans les valeurs IR pour déterminer le type de geste. Par exemple : si les capteurs haut gauche et bas gauche IR détectent quelque chose puis les booléens « rising_TL » et « rising_BL » aura la valeur true et le geste attendu sera « east ». Après cela, si les capteurs haut droit et bas droit IR détectent quelque chose mais le TL et le BL ne (donc « decreasing_TL » et « decreasing_BL » aura la valeur true), puis le geste est « est » et l’Arduino envoie ceci via le port série.
Si vous ne comprenez pas ce essayez d’imaginer votre main se déplaçant de gauche à droite. Quand il est au-dessus des capteurs gauche que beaucoup de lumière infrarouge qui figurera, donc ils détectent qu’il y a quelque chose au-dessus d’eux. Lorsque vous gardez votre main en mouvement et il est au-dessus des droite capteurs ils détectent qu’il y a quelque chose au-dessus d’eux, mais les capteurs gauche ne détectent rien. Basé là-dessus, l’Arduino peut dire avec précision le type de geste fait.