Luta vinkel visualisering med Edison, accelerometer och Python (6 / 7 steg)
Steg 6: Beräkna tilt och Visa
Tiltvinkel beräknas baserat på acceleration mätningar längs X- och Z-axlarna.
Av figuren ovan, kan vi se den vinkeln beräknas som tan-inversen av (-Ax/Az).
Det finns en funktion i python kallas ARCTAN2 som tar två argument och ger vinkeln mellan - pi och pi radianer baserat på tecken och förhållandet mellan argumenten. Nedan är ett kodstycke visar vinkel beräkningen genomförandet.
# konvertera accelerometer läsningar till vinkel i radianer och sedan konverterar radianer till grader
vinkel = math.atan2 (Ax, -1 * Az) * (180 / math.pi)
Observera att tecknet för Ax och Az återförs från som visas i den
figur. Detta är avsiktligt. Det behövs eftersom när accelerometern monteras ombord Edison som beskrivits tidigare, framsidan ansikte styrelsens accelerometer som har adxl335 chip, är vänd nedåt i bild, jag har gjort beräkningarna antar det är vänd uppåt. Jag insåg inte detta förrän jag hade samlat ihop allt och sedan testa den. Jag ber om ursäkt om detta skapar viss förvirring till följd av min tillsyn.
Displayen
För levande visning av Tiltvinkel, kommer vi att använda PyQtGraph modul. Här är en hög nivå översikt över hur den display delen fungerar:
1) ritytan, axlar etc har initierats
2) en funktion kallas update() är kallas rekursivt varje 50 millisekunder som startar en klientsocket, får accelerometer data från servern, bearbetar den för att beräkna vinkel, visas i grafen och stänger uttaget. Detta inträffar regelbundet varje 50 ms med hjälp av en timer (kallas QTimer).
För mer information om programvaran, se det fullständiga genomförandet av klient och server program som jag har lagt upp i nästa steg.