Étape 1: théorie
Je n’arriverais pas dans les détails mathématiques sur comment calculer les angles d’inclinaison, ou comment j’ai tenter de filtrer la gravité. Cependant, voici un aperçu général de la théorie derrière mon code.
L’accéléromètre que j’ai utilisé détecte accélération sur 3 axes, X, Y et Z. Tel que discuté lors de la précédente instructable les lectures de ces axes représentent les vecteurs composants. Lorsque l’appareil repose à plat sur une table, gravité est alignée avec son axe Z afin que l’axe Z est à peu près 1. Les axes X et Y dans ce cas, tous les deux lu 0. Lorsque vous faites pivoter la gravité Conseil va tomber quelque part entre les axes X Y et Z. Autrement dit, vecteurs de composant de la gravité sont répartis entre les axes. La clôture que le vecteur de la gravité est à la queue avec un axe, le plus près de lecture que l’axe sera de 1. Ainsi nous pouvons utiliser certains trigonométrie pour calculer l’angle d’inclinaison, reposent sur les amplitudes de lire sur les axes X Y et Z. Dans mon code, que je me réfère à ces angles comme les angles d’Euler, depuis les angles qui représentent l’orientation 3d d’un objet sont appelés angles d’Euler.
Plus sur les Angles d’Euler, ici : http://en.wikipedia.org/wiki/Euler_angles
Dans mon code, j’ai aussi inclus un filtre de gravité. Il utilise les angles d’Euler pour estimer les vecteurs composants provoquées par gravité. Ces vecteurs composant estimée à soustraire pour obtenir valeur libre gravité finale. Encore une fois cette approche fonctionne uniquement lorsque l’appareil est arrêtée.