Flight Simulator avec Arduino et Python (6 / 9 étapes)

Étape 6: Python souris contrôle

Nous allons utiliser Python3.2 avec la bibliothèque pywin32 à prendre le contrôle de certaines fonctions Windows tels que le contrôle de la souris. La bibliothèque pyserial va nous permettre de lire ce que Arduino nous envoie sur le Port USB de la série.

Obtenir le code complet est indiqué dans la Prochaine é taPE. Pour l’instant, nous allons voir les principales idées qui rendent le code fonctionnent.

1.
Au début, nous ouvrons le port série :
ser = serial. Série (COM 1-9600) # ouvrir le Port série

Mais nous devons d’abord comprendre sur quel port COM, c’est sur.
Que nous faire essayer chacun à leur tour. En cas d’échec nous traitent de l' exception et continuez à regarder.

# Savoir quel port COM l’Arduino est sur
de com par range(15) :
Essayez :
SER = serial. Série (com, 9600)
# ouvrir le Port série

print("Found on COM",com+1) # si vous êtes arrivé ici le port COM a été ouvert OK
Pause # nous l’avons trouvé alors arrêtez de la recherche
sauf :
Print ("rien sur la COM", com + 1)

2.
swState est la variable qui que nous indiquera l’état de l’interrupteur dans (à partir du port série de l’Arduino).

En fait, nous ne voulons pas de connaître l’état de l’interrupteur. Nous voulons savoir quand le bouton est enfoncé.
Nous y parvenons en garder la trace de la valeur précédente et en soustrayant la valeur actualisée de celle-ci. Nous qui mettons en fonction :

def swPressed() :
Retour à swStateD1 - swState
# 0,1, -1 : même, juste pressé, vient de sortir

c'est-à-dire
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,

Comme le dit le commentaire : lorsque vous appuyez sur le bouton swPressed() renvoie la valeur 1

3.
Nous avons lu les données séries envoyées par l’Arduino utilisant ser.readline() comme suit :
Cette ligne indique une ligne jusqu'à et y compris les caractères « newline » « \r\n ».
rx = ser.readline().decode().split('\r\n')

et nous nous sommes séparés il issu des virgules
données = rx[0].split(',')
Enfin, nous indexons chaque élément de données fom données (liste) :
xTilt = int(data[0])
yTilt = int(data[1])
zTilt = int(data[2])
swState = int(data[3])

4.
Ensuite, nous calculons la x, la position y du curseur basé sur la position « centrale » (c.-à-d. le cx, position cy du curseur lorsque nous avons appuyé sur l’interrupteur pour activer un contrôle du curseur - plus sur cela plus tard) et l’inclinaison. Nous donnons aussi un contrôle sur la sensibilité c'est-à-dire combien le x, valeurs y déplacent pour une valeur donnée de Tilt :
x = cx + xTilt/sensibilité

Et nous limitons les x, les valeurs y. Bien fait en Python comme suit :
x = max (min (xMax, x), 0) # limite pour les coordonnées écran

5.
Enfin, nous vérifions si l’interrupteur est allé non Pressed à Pressed :
sw = swPressed() # vérifier le bouton

Si c’était juste pressé et nous sommes en contrôle du curseur (enCursor == 1) puis nous désactivons le curseur et Pause hors de la boucle while se terminant le programme. Mais avant que nous rompons nous imiter l’appui de la touche espace pour PAUSE Flight Simulator comme suit :
win32api.keybd_event(0x20, 0,0,0) # Appuyez sur la touche espace pour faire une Pause Flight Simulator
win32api.keybd_event (0 x 20, 0, win32con. KEYEVENTF_KEYUP, 0)

Sinon si le commutateur a été juste pressé et nous ne sommes pas dans le contrôle du curseur (enCursor == 0) il faut activer le curseur (enCursor == 1), mise à jour de la cx, variables cy à la position actuelle
(cx, cy) = win32api. GetCursorPos()
nous obtenons la cx, cy valeurs afin que nous pouvons déplacer le curseur + ou - de ce point en x et y comme l’accéléromètre est incliné.

et cliquez sur le bouton gauche de la souris à l’aide de la bibliothèque win32 :
win32api.mouse_event (win32con. MOUSEEVENTF_LEFTDOWN,int(x),int(y),0,0)
win32api.mouse_event (win32con. MOUSEEVENTF_LEFTUP,int(x),int(y),0,0)

Maintenant si nous sommes en contrôle du curseur, nous nous déplaçons le curseur à le x, position y, nous avons calculé précédemment de l’inclinaison :
si enCursor : win32api. SetCursorPos((int(x),int(y)))

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

Copiez le code à l' étape suivante dans une nouvelle fenêtre au ralenti (IDE Python) et enregistrez-le sous mouse.py

Articles Liés

Arduino-pneumatique Flight Simulator

Arduino-pneumatique Flight Simulator

Bonjour, mon nom est Lee Dominick. Je suis une personne âgée à l'école secondaire, qui est aussi un programmeur et inventeur. J'ai créé le "simulateur de vol LifeBeam" (nom de mon projet) parce que je voulais me surpasser et d'utiliser mes compé
Arduino Esplora Flight Simulator

Arduino Esplora Flight Simulator

contrôle l'option de simulateur de vol de Google Earth à l'aide de l'accéléromètre de l'Arduino Esplora.Voler pratiquement partout dans le monde ; incliner l'accéléromètre avant, arrière, gauche et droite pour contrôler le Pitching et les opérations
Audio stéréo avec Arduino

Audio stéréo avec Arduino

Récemment j'ai été annonce beaucoup de projets qui utilisent un 8 bits échelle de résistanceconvertisseur numérique analogique (DAC) et un Arduino à faire sonner. (voir la boîte d'effets vocaux Arduino, l'échantillonneur de tambour Arduino et mon tut
Une sphère en lévitation tourne s’allume et clignote avec Arduino

Une sphère en lévitation tourne s’allume et clignote avec Arduino

Une étoile de la mort peu lévitation de Instructables m'a invité au nouveau projet avec Arduino. Trois stratégies ont été décidés et gardés pour le différencier de l'ancêtre.Faire moi-même avec prêt-à-pas (ou moins).Garder en rotation.S'allume et cli
IR télécommande pour votre ordinateur avec arduino

IR télécommande pour votre ordinateur avec arduino

Avec ce récepteur, contrôlez votre ordinateur à distance grâce au module IR et l'Arduino.Lazzy mode activé ^^Étape 1 : Tout d'abord je dois démonter le récepteur Sony VAIO IR myold.Un récepteur IR qui vient de mon père, complètement inutilisable car
Comment faire un téléphone Mobile et l’ordinateur contrôlé 3D Robot imprimé avec Arduino - IoBot.

Comment faire un téléphone Mobile et l’ordinateur contrôlé 3D Robot imprimé avec Arduino - IoBot.

Si vous cherchez un moyen de contrôler un Arduino basé des périphériques, cette instruction vous montrera comment le faire en s'appuyant simple robot.Le IoBot peut être contrôlé par une application mobile et l'ordinateur via LAN ou câble USB. L'appli
Ajout d’aéronefs à Microsoft Flight Simulator

Ajout d’aéronefs à Microsoft Flight Simulator

ce Instructable est là pour fournir un aperçu de la façon d'importer des aéronefs le module dans Microsoft Flight Simulator. J'ai FS2002 et oui, j'ai l'intention de mettre à niveau pour FS2004, mais les mêmes étapes de base s'appliquent pour FS2004,
Commutation Ethernet - avec Arduino

Commutation Ethernet - avec Arduino

Aim :Passer le relais de l'ethernet ou internet, en utilisant votre téléphone portable, tablette ou ordinateur avec une interface graphique agréable.Mise à jour V4.06Veuillez lire les étapes ci-dessous pour l'étape 2 Si vous lisez cet article pour la
Construire un circuit transistor pour contrôle télécommande de climatiseur avec Arduino

Construire un circuit transistor pour contrôle télécommande de climatiseur avec Arduino

je soutenais un groupe d'étudiants sur leur projet de remise des diplômes. Une des difficultés qu'ils rencontrent est sur le contrôle d'une unité de climatisation avec microcontrôleur Arduino.La première expérience, que nous avons essayé de s'en sort
Contrôles personnalisés pour Google Earth Flight Simulator

Contrôles personnalisés pour Google Earth Flight Simulator

Alors, vous êtes confus avec les commandes pour Google Earth Flight Simulator, ou ils ne font pas de sens, ou vous avez un mac et que vous n'avez pas les clés nécessaires sur votre clavier--bien tout ce qui peut être facilement résolu.Étape 1: What t
Capturer l’image à l’aide de capteur à ultrasons avec arduino

Capturer l’image à l’aide de capteur à ultrasons avec arduino

J'ai été dans l'espace de l'ITO pour pas mal de mois et essayant d'intégrer les choses avec la carte Arduino, récemment je suis tombé sur le capteur à ultrasons, il est intéressant. Alors j'ai pensé à créer un petit projet. Le but du projet est de ca
PlotClock avec Arduino

PlotClock avec Arduino

Salut, nous sommes un groupe d'étudiants et c'est notre premier projet en instructables, et nous espérons qu'il vous plaira !Ce projet prévoyait que « Creative Electronics », une électronique de Beng génie 4ème module de l'année à l'Université de Mal
Comment dessiner sur un Oscilloscope avec Arduino !

Comment dessiner sur un Oscilloscope avec Arduino !

Tout d'abord, laisse aller sur quelques notions de base. Un oscilloscope est un outil de visualisation de changement des signaux électriques.Oscilloscope: Oscillation (changement), portée (visualisation). Ensemble, ils font « oscilloscope » !Un oscil
Thermostat avec Arduino et grand écran LCD de la maison

Thermostat avec Arduino et grand écran LCD de la maison

Remplacer un thermostat standard (SIEMENS-RAA30 16GR) avec un individu fait, axée sur l'arduino, grand écran LCD est un amusant projet.AVERTISSEMENT : Prise de courant est utilisé dans les deux contrôlant le four et pour arduino puissance alors s'il