Etape 11 : Détection de mouvement
Cette étape décrit comment le contrôleur décide quel genre de mouvement qui se passe. Par des essais est a déterminé que, tel que référencé de l’état de repos, c’est le modèle qui suit le mouvement de la manette. (G = grand, L = moins, S = égal)
Idéal : 510, 497, 627
611, 492, 521... à droite G, S, L
Gauche 408, 496, 530... L, S, L
Transmettre 512, 598, 526... S, G, L
Inverser la 514, 395, 536... S, L, L
Ce que cela veut dire, c’est que, par exemple, pour y faire mouvement vers la droite, le X lecture doit être supérieure à l’inactivité, la lecture Y doit être sur le même et la lecture doit être moins de ralenti de Z. Le même genre de logique suit pour les autres types de requête. Dans le code suivant, l’instruction switch/case utilise une logique simple pour déterminer le mouvement. Le cas par défaut est déclarer une « erreur » et ne pas envoyer une requête si pour une raison quelconque l’accéléromètre n’est pas détectée ou perdu.
case 0 :
LCD.Clear() ; lcd.setCursor(0,0) ;
LCD.Print("Move") ; lcd.setCursor (0, 1) ;
Si (aimsthe desasters > idleX & & yRaw > idleminY & & yRaw < idlemaxY & & zRaw < idleZ) {}
LCD.Print("Right") ;
}
ElseIf (aimsthe desasters < idleX & & yRaw > idleminY & & yRaw < idlemaxY & & zRaw < idleZ) {}
LCD.Print("left") ;
}
ElseIf (aimsthe desasters > idleminX & & aimsthe desasters < idlemaxX & & yRaw > idleY & & zRaw < idleZ) {}
LCD.Print("Forward") ;
}
ElseIf (aimsthe desasters > idleminX & & aimsthe desasters < idlemaxX & & yRaw < idleY & & zRaw < idleZ) {}
LCD.Print("Reverse") ;
}
else {}
LCD.Print("Idle") ;
}