Flight Simulator med Arduino och Python (6 / 9 steg)

Steg 6: Python mus kontroll

Vi kommer att använda Python3.2 med pywin32 biblioteket för att få kontroll över några av Windows-funktioner såsom muskontroll. Pyserial biblioteket gör det möjligt att läsa vad Arduino skickar oss på USB-seriell Port.

Den fullständiga koden visas i Nästa Step. För nu ska vi se viktigaste idéer som gör koden fungerar.

1.
I början öppna vi den seriella porten:
ser = följetong. Följetong (COM-1, 9600) # öppna serieporten

Men först måste vi räkna ut vilken COM-port det är på.
För att göra att vi prova var och en i sin tur. Om det misslyckas vi hantera undantag och hålla titta.

# Ta reda på vilken COM-port Arduino är på
för com i range(15):
försök:
ser = följetong. Följetong (com, 9600)
# öppna serieporten
print("Found on COM",com+1) # om du kom hit COM-porten öppnades OK
break # Vi hittade det så sluta söka
utom:
skriva ut ("ingenting på COM", com + 1)

2.
swState är den variabel som vi läser switch staten in i (från den seriella porten från Arduino).

Egentligen vill vi inte veta tillståndet switch. Vi vill veta när knappen har tryckts.
Vi kan göra detta genom att hålla reda på det föregående värdet och subtrahera nuvärdet från den. Vi satt som i en funktion:

def swPressed():
återgå swStateD1 - swState
# 0,1, -1: samma, bara man trycker precis släppt

dvs.
swState: 1,1,1,0,0,0,1,1,-
swStateD1:-, 1,1,1,0,0,0,1,1
swPressed():-, 0,0,1,0,0,-1,0,

Som kommentaren säger: när knappen trycks swPressed() returnerar 1

3.
Vi läser den seriella data som skickas av Arduino med ser.readline() enligt följande:
Den här raden läser en linje upp till och inklusive radmatningstecken "\r\n".
rx = ser.readline().decode().split('\r\n')

och vi delar upp det baserat på kommatecken
data = rx[0].split(',')
Slutligen indexera vi varje bit data fom data (en lista):
xTilt = int(data[0])
yTilt = int(data[1])
zTilt = int(data[2])
swState = int(data[3])

4.
Nästa vi beräkna x, y-position för markören utifrån "" mittläge (dvs cx, cy positionen för markören när vi tryckte på switch för att aktivera markörkontroll - mer om det senare) och lutning. Vi ger också viss kontroll över känslighet dvs hur mycket x, flyttar y-värden för ett givet Tilt värde:
x = cx + xTilt/känslighet

Och vi begränsa x, y-värden. Bra gjort i Python som följer:
x = max (min (xMax, x), 0) # gräns till samordnar den skärm

5.
Slutligen kontrollerar vi om växeln gick från inte pressad att tryckt:
sw = swPressed() # Check knappen

Om det bara var pressade och vi har kontroll över markören (enCursor == 1) då vi inaktivera markören och bryta utanför medan systemet slutar programmet. Men innan vi bryter vi efterlikna pressning av tangenten för att pausa Flight Simulator som följer:
win32api.keybd_event(0x20, 0,0,0) # Tryck på blanksteg för att pausa Flight Simulator
win32api.keybd_event (0x20, 0, win32con. KEYEVENTF_KEYUP, 0)

Annars om växeln trycktes bara och vi har inte kontroll över markören (enCursor == 0) så måste vi aktivera markören (enCursor == 1), uppdatera cx, cy variabler till den nuvarande ståndpunkten
(cx, cy) = win32api. GetCursorPos()
Vi får cx, cy värden så vi kan flytta markören + eller - i den här punkten i x och y som accelerometern lutas.

och klicka med vänster musknapp med hjälp av win32 -biblioteket:
win32api.mouse_event (win32con. MOUSEEVENTF_LEFTDOWN,int(x),int(y),0,0)
win32api.mouse_event (win32con. MOUSEEVENTF_LEFTUP,int(x),int(y),0,0)

Nu om vi är i kontroll över markören, flytta vi markören till x, y-position vi beräknat tidigare från Tilt:
om enCursor: win32api. SetCursorPos((int(x),int(y)))

=================

Kopiera koden i Nästa steg in i ett nytt fönster i IDLE (Python IDE) och spara den som mouse.py

Se Steg
Relaterade Ämnen

Multiplexering med Arduino och 74HC595

74HC595 är en lätt och billig (på cirka 60 cent styck) sätt att öka antalet digitala ut stiften på din Arduino. I denna tutorial ska jag visa dig hur man kör upp till 16 lysdioder med en 74HC595 med hjälp av en teknik som kallas multiplexing. I slutä...

Mugg musik: Förvandla vatten till ett Instrument med Arduino och ChucK

Vad händer om du slå alla ledande yta till ett instrument? Gillar, säga... en mugg vatten? Bäst av allt, är det billigt; du behöver bara $1 värt extra elektriska komponenter (inte inklusive Arduino).För detta projekt, min vän skörd och jag kombinerad...

Säkerhetssystem och tillgång kontroll med Arduino och RFID-

säkerhetssystem och tillgång kontroll med Arduino och RFIDDetta projekt är en evolotuin av mitt första projekt kallat "Arduino - Security System och Access Control"Som ni kan se på bloggen http://arduinobymyself.blogspot.com.br/2012/03/arduino-s...

Hur använder gamla Stepper Motors med Arduino och A4988 Driver

Jag har varit med stegmotorer ett tag nu, och de är fantastiska för alla typer av robotic projekt.Idag kommer jag att dela de saker jag har lärt mig hittills om återanvända gamla stegmotorer bärgades från skrivare. Identifiera stegmotorerStegmotorer...

Power övervakning med Arduino och logga in i Google blad

Sedan senaste veckorna tänkte jag på att göra ett projekt som kan hjälpa mig att hålla ett spår på min dagliga energi användningsområden. I detta projekt använder jag en 30A övervakning styrelse. denna styrelse har 6 strömsensor som kan läsa upp till...

Roligt spel med arduino och bearbetning

Denna tutorial ska show dig hur man gör en första person FPS-shooter i bearbetning med hjälp av en arduino. Detta projekt lämnades till oss som en avslutande tentamen i en teknisk specialkurs, (gymnasieskolan).Video av projektet! :) (Svårt att spela...

Kontroll av en DC motor med Arduino och Visual Basic

Hej vänner detta är mitt första inlägg i instructables.com där jag kommer att försöka ge mer nyhet des ofta.Idag är temat med Arduino och Visual Basic.Det projekt som vi ser idag är controller en dc-motor med Arduino och Visual Basic.För att styra en...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Rörelseaktiverade ljus med Arduino och HC-SR04 sensor

Jag gjorde detta projekt för länge sedan att tända upp i köket när jag öppnar bakdörren.Tanken var när jag öppnar bakdörren, detta ljus som tänds under 15 sekunder och som ger mig tillräckligt med tid att nå strömbrytaren på den motsatta väggen. Före...

Kapacitans mätare med arduino och 555 timer

KAPACITANS MÄTARE MED ARDUINO OCH 555 TIMER CHIPDetta projekt syftar till att bygga en enkel kapacitans mätare, en enhet för att mäta kapacitans i nanoFarads och microFarad, med en räckvidd på ca 1 nanoFarad till hundratals microFarads.Detta projekt,...

Kontrollera en LED med arduino och Wifly sköld

För att visa hur du kan styra enheter via wifi med hjälp av arduino wifly shield, kommer jag slå på och av en LED genom att skicka en http-begäran från webbläsaren till wifly sköld.Krav:1. Arduino uno2. Wifly sköld3. ledde4. 220 ohm motstånd5. ett pa...

Hur man styr motorer med Arduino och RC mottagare i 10 minuter

Detta är min andra handledning på att kontrollera saker med Arduino och R/C-mottagare. Om du inte har tittat på min första tutorial jag föreslår att du tittar på det första, här: i den här guiden kommer vi att titta på hur man styr motorer också anvä...

Styra DC Motors(PC Fans) med Arduino och Relay board

I detta instructable kommer vi att se utan att gå in i detalj, hur man använder 12V DC motorer (PC Fans) med Arduino och relay board eBlockSteg 1: Konfigurera maskinvara och programvara För att göra det behöver vi viss maskinvara kan du hitta på Inte...

Kontrollerar ledde med Arduino och C#

Hej vänner detta är min första Arduino Tutorial på att kontrollera ett LED med Arduino och C#-program.Du behöverArduinoen1K ResistorLEDProgramvaraArduino programvara - www.arduino.ccMicrosoft visual C# / Visual StudioLED är ansluten till Pin 13.Titta...

Kontrollera en RGB ledde med Arduino och bearbetning

detta instructable (min första inte mindre) visar hur man styr en RGB ledde med bearbetning och arduino.Den viktiga funktionen att vara färg markeras genom att klicka på en bild, RGB-värdet för den pixel du klickar på bearbetas och skickas till den a...

Spela upp ljud på dator med arduino och progduino

Idag kommer jag visa dig hur lätt det är att bygga en enkel spelare och kör det på datorn med arduino och progduino.Läs mer om progduino: http://www.progduino.comSteg 1: Arduino kod - spelaren på din dator.Kopiera koden till din arduino redaktör.void...

Läs/emulera fjärrkontroller med Arduino och Raspberry Pi

Fjärrkontroller är överallt. De är gränssnittet till din TV, musiksystem och vad-inte. Du har kanske några extra dem liggande, ödelagda på nedläggningen av deras bättre halvor. Muntra dem upp och Lägg tillbaka dem i bruk! (Skynet godkänner...)Här är...

Bygga din Internet kontrollerad Video-Streaming Robot med Arduino och Raspberry Pi

< the Instructable och koden är redo. Njut! Lämna en kommentar med du feedback! >Jag är (aka LiquidCrystalDisplay / Itay), en 14 år gammal student från Israel lärande i Max Shein Junior High School för avancerad vetenskap och matematik. Jag gör dett...

Piano trappor med Arduino och Raspberry Pi

Vem älskar inte musik? Dessa Piano trappor är en interaktiv och relativt smidig musikaliska installation som kan tillämpas på i princip alla trapphus. Jag byggde dem för HackPrinceton tillsammans med mina vänner Erica Portnoy och Vincent Castaneda, o...