Stap 1: theorie
Ik zal niet krijgen in de wiskunde details over hoe het berekenen van de tilt hoeken, of hoe ik probeer uitfilteren van zwaartekracht. Echter hier is een algemeen overzicht van de theorie achter mijn code.
De versnellingsmeter die ik gebruikte zintuigen versnelling op 3 assen, X, Y en Z. Zoals besproken in de vorige instructable de lezingen van deze assen vertegenwoordigen component vectoren. Wanneer het apparaat plat op een tafel zit, is zwaartekracht vergeleken met de Z-as zodat de Z-as ongeveer 1 leest. De X- en Y-assen lezen in dit geval beide 0. Wanneer u roteert zal de ernst van de Raad van bestuur vallen ergens tussen de X, Y en Z-assen. Dit betekent gravity's component vectoren zijn verspreid tussen de assen. De sluiten die de zwaartekracht vector wil voering met een as, de dichter de as lezing zullen op 1. Dus we sommige Trigonometrie gebruiken kunnen voor het berekenen van de tilt hoek, gebaseerd op de magnitude lezen op de X en Y- en Z-assen. In mijn code verwijs ik naar deze hoeken als Euler-hoeken, sinds hoeken die 3D-afdrukstand van een object vertegenwoordigen heten Euler-hoeken.
Meer op de hoeken van Euler hier: http://en.wikipedia.org/wiki/Euler_angles
In mijn code omvatte ik ook een zwaartekracht-filter. Het maakt gebruik van de Euler-hoeken te schatten van de vectoren van de component veroorzaakt door de zwaartekracht. Ik aftrekken deze geschatte component vectoren uit om definitieve zwaartekracht gratis waarde te verkrijgen. Deze benadering werkt weer alleen wanneer het apparaat stilstaat.