Flight Simulator med Arduino och Python (4 / 9 steg)
Steg 4: Arduino Tilt kontroll
1. luta Arduino accelerometern skickar data till Python på PC
2. Python flyttar datorns mus
3. Google Earth körs flygsimulatorn enligt den muspositionen
Vi börjar med att få Arduino att känna lutningen på accelerometern och skicka data över den seriella porten (via USB) till PC.
Den fullständiga koden visas i Nästa steg. För nu ska vi se viktigaste idéer som gör koden fungerar.
1.
I början av koden måste vi fastställa vilka avläsningar från accelerometern motsvara nivå. Vi måste göra detta så att vi vet när enheten har varit lutas från nivå.
Vi skriver en funktion kallad average() använder en slinga för att mäta relevanta data från stiftet och genomsnittlig det enligt följande:
Få ett genomsnitt av 8 avläsningar från "pin"
int genomsnittet (int pin) {
int Ave = 0;
för (int jag = 0; jag < 8; i ++) {
Ave = Ave + analogRead(pin);
}
returnera Ave/8.
}
Vi kallar average() för x, y och z axel mätningar under avsnittet setup() som körs en gång, i början av programmet.
2.
Vi upprättar den lutas en enkel subtraktion enligt följande:
xTilt = analogRead (xpin)-s;
3.
Vi måste kommunicera delstaten på tryckknapp Switch Python så kan det övertagande muskontroll när tryckte och lämna det ifrån sig när du trycker på igen.
Det gör genom vi att aktivera en Pullup på swpin i avsnittet setup() :
digitalWrite (swpin, hög); / / aktivera Pullup på Switch stift
och Läs PIN-koden i avsnittet loop():
swState = digitalRead(swpin); / / swState = 0 när du trycker
4.
Vi kommunicerar med Python på PC via USB-seriell anslutning genom att skriva en förutbestämd strängformat:
"Data, xTilt, yTilt, zTilt, swState\n"
som en sträng börjar med "Data", tilt värdena avgränsas med kommatecken, växla staten och ett radmatningstecken.
Så om xTilt, yTilt, zTilt och swState om 2, 5, -1 och 0 respektive strängen skickas skulle vara:
"Uppgifter, 2, 5, -1, 0\n"
Som alla data går över serieporten kan du använda den Serial Monitor < Ctrl + Skift + M > Visa den.
5.
Gå till Nästa steg, kopiera koden till en tom skiss och belasta upp till Arduino.