Flight Simulator met Arduino en Python (6 / 9 stap)

Stap 6: De controle van de muis van de Python

We gebruiken Python3.2 met de pywin32 -bibliotheek controle krijgen over sommige van de Windows-functies zoals Mouse Control. De bibliotheek pyserial zal ons in staat stellen om te lezen wat Arduino is sturen op de USB-seriële poort.

De volledige code wordt weergegeven in de Volgende Step. Voor nu laten we eens kijken naar de belangrijkste ideeën waardoor de code werken.

1.
Aan het begin openen we de seriële poort:
ser = seriële. Seriële (COM-1, 9600) # de seriële poort openen

Maar eerst moeten we om erachter te komen welke COM-poort is het op.
Om te doen dat wij proberen ieder op zijn beurt. Mocht hij verzuimen we omgaan met de uitzondering en blijf kijken.

# Erachter te komen welke COM-poort de Arduino is op
voor com in range(15):
Try:
ser seriële =. Serieel (com, 9600)
# de seriële poort openen

print("Found on COM",com+1) # als je hier de COM-poort OK is geopend
pauze # We vonden het dus stoppen met zoeken
met uitzondering van:
bedrukken ("niets COM", com + 1)

2.
swState is de variabele die we de schakelaar staat in (vanaf de seriële poort van de Arduino lezen).

We willen eigenlijk de schakelaar staat kent. We willen weten wanneer de knop is ingedrukt.
We kunnen dit doen door het bijhouden van de waarde van de vorige en de huidige waarde van het af te trekken. We zetten dat in een functie:

def swPressed():
keren swStateD1 - swState
# 0,1, -1: hetzelfde, enkel gedrukt, net vrijgegeven

dat wil zeggen
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,

Als de opmerking zegt: wanneer de knop wordt gedrukt swPressed() geeft 1 als resultaat

3.
We lezen de seriële gegevens worden verzonden door het Arduino met behulp van ser.readline() als volgt:
Deze lijn leest een lijn tot en met inbegrip van de 'newline' tekens '\r\n'.
rx = ser.readline().decode().split('\r\n')

en we splitsen op basis van komma 's
gegevens rx[0].split(',') =
We indexeren ten slotte elk stuk van gegevens fom gegevens (een lijst):
xTilt = int(data[0])
yTilt = int(data[1])
zTilt = int(data[2])
swState = int(data[3])

4.
Vervolgens berekenen we de x, y-positie van de cursor op basis van het "centrum" positie (dwz de cx, cy positie van de cursor wanneer we de schakelaar te activeren aanwijzerverplaatsing - daarover meer verderop ingedrukt), en de tilt. Geven we ook enige controle over de gevoeligheid d.w.z. hoeveel de x, verplaatsen y-waarden voor een gegeven waarde van de Tilt:
x = cx + xTilt/gevoeligheid

En we beperken de x, y-waarden. Mooi gedaan in Python als volgt:
x = max (min (xMax, x), 0) # limiet aan de coördinaten van een scherm

5.
Ten slotte controleren we als de schakeloptie ging van NOT Pressed aan Pressed:
sw = swPressed() # Controleer de knop

Als het net werd ingedrukt, en we in de controle van de cursor zijn (enCursor == 1) dan we uitschakelen van de cursor en breken uit de lus van het terwijl het programma eindigt. Maar voordat we breken we emuleren de indrukken van de spatiebalk om te pauzeren Flight Simulator als volgt:
win32api.keybd_event(0x20, 0,0,0) # Druk op de spatiebalk om te pauzeren van Flight Simulator
win32api.keybd_event (0x20, 0, win32con. KEYEVENTF_KEYUP, 0)

Anders als de schakelaar net werd ingedrukt en wij niet in de controle van de cursor zijn (enCursor == 0) dan we hebben om de cursor (enCursor == 1), de cx, cy variabelen bijwerken naar de huidige positie
(cx, cy) = win32api. GetCursorPos()
We krijgen de cx, cy waarden zodat we kunnen gaan de cursor + of - dit punt in x en y als de versnellingsmeter wordt gekanteld.

en klikt u op de linker muisknop met behulp van de win32 -bibliotheek:
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 als we in de controle van de cursor, gaan we de cursor met de x, y-positie die we eerder van de Tilt berekend:
als enCursor: win32api. SetCursorPos((int(x),int(y)))

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

Kopieer de code in de volgende stap in een nieuwvenster in IDLE (Python IDE) en sla het op als mouse.py

Gerelateerde Artikelen

Arduino-pneumatische Flight Simulator

Arduino-pneumatische Flight Simulator

Hallo, mijn naam is Dominick Lee. Ik ben een senior op de middelbare school, die ook een programmeur en uitvinder is. Ik heb de "LifeBeam Flight Simulator" (naam van mijn project) omdat ik wilde mezelf uitdaging en gebruik maken van mijn vaardig
Lego Mindstorms NXT Flight Simulator

Lego Mindstorms NXT Flight Simulator

Hallo jongens, Bedankt voor het kijken van mijn project! Dit is mijn inzending van de last-minute op de uitdaging van het speelgoed.Dit is een flight simulator met een helikopter die omhoog, omlaag, vooruit en achteruit kunt bewegen. De rotors kunnen
Arduino Esplora Flight Simulator

Arduino Esplora Flight Simulator

de optie Flight Simulator van Google Earth gebruiken van de versnellingsmeter van de Arduino Esplora controle.Vliegen vrijwel over de hele wereld; kantelen van de versnellingsmeter, vooruit, terug, links en rechts voor het besturen van het vliegtuig
Arduino Controlled Flight Simulator - "The Viper"

Arduino Controlled Flight Simulator - "The Viper"

mijn Maker Faire project voor 2012 is "The Viper"--een Arduino controlled flight simulator geïnspireerd door het schip van de gelijknamige filmpje uit de SyFy Channel's TV serie Battlestar Galactica. Het draait 360 graden langs twee assen, wat b
Uitzetten van real-time gegevens van Arduino met behulp van Python (matplotlib)

Uitzetten van real-time gegevens van Arduino met behulp van Python (matplotlib)

Arduino is fantastisch als tussenpersoon tussen uw computer en een ruwe elektronische schakeling. Via de seriële interface, kunt u informatie ophalen uit sensoren bevestigd aan je Arduino. (U kunt ook informatie verzenden via de seriële interface te
Met behulp van een Arduino en Python plot/opslaan gegevens

Met behulp van een Arduino en Python plot/opslaan gegevens

een snelle en gemakkelijke manier om te zien (en sla) gegevens genomen met behulp van een Arduino op uw computer.(Opmerking: niet de meest robuuste methode, maar het werkt goed genoeg)Materialen:-Arduino (im ' using een Uno)-Computer (ik heb een Dell
Een Levitating bol draait gloed en knippert met Arduino

Een Levitating bol draait gloed en knippert met Arduino

Een levitating little Death Star in Instructables nodigde me aan het nieuwe project met Arduino. Drie beleidsterreinen werden besloten en bewaard als onderscheid met de voorloper.Doe het zelf met geen (of minder) ready-made.Draaiende houden.Maak gloe
Aan de slag met Intel Edison - Python Programming

Aan de slag met Intel Edison - Python Programming

Deze gids is voor alles wat je python programmeurs die altijd heb afgevraagd,Wat is de beste manier om te gaan "IoT"(Internet of Things) nu sinds je hebt gemaakt naar deze pagina, koop zelf een Intel Edison van Amazon of een on line opslaan zoal
Bouw je Robot Internet gecontroleerde Video-Streaming met Arduino en Raspberry Pi

Bouw je Robot Internet gecontroleerde Video-Streaming met Arduino en Raspberry Pi

< the Instructable en de code zijn klaar. Geniet van! Laat een reactie met je feedback! >Ik ben (aka LiquidCrystalDisplay / Itay), een 14 jaar oude student van Israël leren in de Max Shein Junior High School voor geavanceerde wetenschap en wiskunde.
Lezen/emuleren afstandsbedieningen met Arduino en Raspberry Pi

Lezen/emuleren afstandsbedieningen met Arduino en Raspberry Pi

Afstandsbedieningen zijn overal. Zij zijn de interface aan uw televisies, muzieksystemen en wat niet. U hebt waarschijnlijk een paar vrije degenen rondslingeren, verwoest op de nalating van hun betere helften. Ze vrolijken en zet ze terug in gebruik!
Hoe maak je een mobiele telefoon en Computer gecontroleerd 3D gedrukte Robot met Arduino - IoBot.

Hoe maak je een mobiele telefoon en Computer gecontroleerd 3D gedrukte Robot met Arduino - IoBot.

Als u op zoek bent naar een manier om een Arduino gebaseerde apparaten te controleren, zal deze instructie u tonen hoe om het te doen door het bouwen van eenvoudige robot.De IoBot kan worden gecontroleerd door mobiel en computer toepassing via LAN of
Vliegtuigen toe te voegen aan Microsoft Flight Simulator

Vliegtuigen toe te voegen aan Microsoft Flight Simulator

dit Instructable is er om te zorgen voor een basisoverzicht van het add-on vliegtuigen importeren in Microsoft Flight Simulator. Ik heb FS2002, en ja, ik ben van plan om te upgraden naar FS2004, maar de dezelfde basisstappen toepassen FS2004 FS2002,
Jet vliegtuigen Free Flight Simulator Game vliegen

Jet vliegtuigen Free Flight Simulator Game vliegen

Computerspel gebaseerd vlucht simulatie is zo geavanceerd en realistische onlangs geworden, nu dat je echt het gevoel alsof je een vliegtuig vliegt. In 'Simulatiemodus' enkele games die u toestaan om te controleren de toonhoogte yaw, roll, gasklep, k
IR afstandsbediening voor uw Computer met arduino

IR afstandsbediening voor uw Computer met arduino

Met deze receiver, uw computer op afstand dankzij de IR-module en de Arduino te bedienen.Lazzy modus geactiveerd ^^Stap 1: Eerst moet ik demonteren myold Sony VAIO IR ontvanger.Een IR-ontvanger die afkomstig is van mijn vader, volledig onbruikbaar om