Arduino à l’aide de la manette de contrôle (3 / 5 étapes)

Étape 3: programmes

j’ai ajouté les programmes dont vous avez besoin

Arduino :

/*

  • JoystickSerialServo
  • --------------
  • Commande de servo avec un PC et un Joystick

*

*

*/

/ ** Ajuster ces valeurs pour votre servo et le programme d’installation, si nécessaire ** /
int servoPin = 3 ; broche de commande de moteur servo
int minPulse = 600 ; position du servo minimale (pour trouver l’utilisation google)
int maxPulse = 2400 ; position du servo maximale (pour trouver l’utilisation google)
int refreshTime = 20 ; temps (en ms) entre deux impulsions (50Hz)

/ ** L’Arduino calcule ces valeurs pour vous ** /
int centerServo ; position du servo Centre
int pulseWidth ; largeur d’impulsion servo
int servoPosition ; commanda la position du servo, 0-180 degrés
int pulseRange ; pulse max - min impulsion
long lastPulse = 0 ; consignateur (ms) de la dernière impulsion

void setup() {}
pinMode (servoPin, sortie) ; Axe servo ensemble comme une broche de sortie
pulseRange = maxPulse - minPulse ;
centerServo = maxPulse - ((pulseRange) / 2) ;
pulseWidth = centerServo ; Le servo du donner un point de départ (ou il flotte)
Serial.Begin(9600) ;
}

void loop() {}
attendre pour l’entrée périodique
Si (Serial.available() > 0) {}
lire les octets entrants :
servoPosition = Serial.read() ;

calculer pulseWidth de servoPosition
pulseWidth = minPulse + (servoPosition * (pulseRange/180)) ;

arrêter l’impulsion servo à min et max
Si (pulseWidth > maxPulse) {pulseWidth = maxPulse;}
Si (pulseWidth < minPulse) {pulseWidth = minPulse;}

débogage
Serial.println(servoPosition) ;
}

le servo chaque 20 ms (refreshTime) avec pulseWidth actuel des impulsions
Cela va tenir la position du servo si inchangé, ou le déplacer si changé
Si (millis() - lastPulse > = refreshTime) {}
digitalWrite (servoPin, HIGH) ; démarrer le pouls
delayMicroseconds(pulseWidth) ; largeur d’impulsion
digitalWrite (servoPin, basse) ; arrêter le pouls
lastPulse = millis() ; économiser le temps de la dernière impulsion
}
}

Python :

#! / usr/bin/env python
#
# joystick-servo.py
#
# créé le 19 décembre 2007
# copyleft 2007 Brian D. Wendt
# http://principialabs.com/
#
code # adapté de :
# http://svn.lee.org/swarm/trunk/mothernode/python/multijoy.py
#
# NOTE : Ce script nécessite les modules Python suivants :
# pyserial - http://pyserial.sourceforge.net/
# pygame - http://www.pygame.org/
# Win32 utilisateurs devez également :
# pywin32 - http://sourceforge.net/projects/pywin32/
#

importation de série
Import pygame

# autoriser plusieurs manettes de jeu
joie =]

# Adresse du port USB Arduino (essayez « COM5 » sur Win32)
usbport = « COM8 »

# define usb connexion série pour Arduino
SER = serial. Série (usbport, 9600)

événement de # poignée joystick
def handleJoyEvent(e) :
Si e.type == pygame. JOYAXISMOTION :
AXIS = « inconnu »
Si (e.dict['axis'] == 1) :
AXIS = « X »

Si (e.dict['axis'] == 0) :
AXIS = « Y »

Si (e.dict['axis'] == 2) :
AXIS = « Throttle »

Si (e.dict['axis'] == 3) :
AXIS = « Z »

Si (axe! = « inconnu ») :
Str = "axe: %s ; Valeur: %f "% (axe, e.dict['value'])
# Décommenter pour déboguer
#output (str, e.dict['joy'])

# Hack de manette de jeu-servo Arduino
Si (axe == « X ») :
POS = e.dict['value "]
# convertir joystick poste à incrément de servo, 0-180
déplacer = round (pos * 90, 0)
Si (déplacer < 0) :
servo = int (90 - abs(move))
autre chose :
servo = int (move + 90)
# convertir poste en caractère ASCII
servoPosition = chr(servo)
# et envoyez à l’Arduino par connexion série
SER.Write(servoPosition)
# Décommenter pour déboguer
#print servo, servoPosition

Elif e.type == pygame. JOYBUTTONDOWN :
Str = "bouton: %d" % (e.dict['button'])
# Décommenter pour déboguer
#output (str, e.dict['joy'])
# La touche 0 (déclencheur) pour quitter
Si (e.dict['button'] == 0) :
imprimer "Bye! \n"
SER.Close()
Quit()
autre chose :
Pass

# imprimer la position de la manette de jeu
sortie de DEF (ligne, bâton) :
imprimer "Joystick: %d ; %s"% (manche, ligne)

# attendre pour l’entrée de la manche
def joystickControl() :
While True :
e = pygame.event.wait()
Si (e.type == pygame. JOYAXISMOTION ou e.type == pygame. JOYBUTTONDOWN) :
handleJoyEvent(e)

méthode principale #
def main() :
# initialisation pygame
pygame.joystick.init()
pygame.Display.init()
Si ce n’est pas pygame.joystick.get_count() :
imprimer "\nPlease connecter une manette et réexécutez. \n"
Quit()
imprimer pygame.joystick.get_count() % « \n%d joystick(s) détecté. »
car moi dans range(pygame.joystick.get_count()) :
myjoy = pygame.joystick.Joystick(i)
myjoy.init()
Joy.Append(myjoy)
imprimer « Joystick % d: » % (i) + joy[i].get_name()
imprimer "Depress déclencheur (touche 0) d’arrêter de fumer. \n"

# courir joystick auditeur boucle
joystickControl()

# autoriser l’utilisation comme script de module ou autonome
Si name == « principale » :
main()

Articles Liés

À l’aide d’une manette de contrôle de moteurs pas à pas avec un FPGA

À l’aide d’une manette de contrôle de moteurs pas à pas avec un FPGA

Dans la troisième étape de mon voyage à recréer le jeu de la griffe avec le Basys3, j'ai connecté deux PmodSTEPs, deux moteurs pas à paset le PmodJSTK à l' Basys3 afin que je peux contrôler chacun des servos avec la PmodJSTK.Pour ce faire, j'ai conne
À l’aide d’une manette de jeu avec votre Arduino

À l’aide d’une manette de jeu avec votre Arduino

Manettes de jeu sont une grande source d'entrée pour un projet. Surtout pour la robotique. Comme les pirates de matériel, la plupart d'entre nous ont toujours aimé ces sortes de choses. Sauf les nouveaux gars cela pourraient trouver difficile à saisi
Application mobile pour surveiller et contrôle Arduino, à l’aide de kito.io plate-forme IOT

Application mobile pour surveiller et contrôle Arduino, à l’aide de kito.io plate-forme IOT

Surveillez et contrôlez votre Arduino depuis votre Mobile App de kito.J'ai développé une plate-forme d'Ito pour aider DIY Makers qui ne vient que pas besoin de connaître de Xcode, Android, JavaScript autrement que savent écrire des Sketches de l'Ardu
Commander une carte Arduino à l’aide d’une télécommande infrarouge

Commander une carte Arduino à l’aide d’une télécommande infrarouge

I-IntroductionBonjour à tous, mon nom est Noreddine Kessa, je suis un passionné de l'électronique.  Je me suis amusé ce week-end à jouer avec mon nouveau jouet, Kit Arduino ATmega328 bricolage que j'ai eu sur eBay, et je serais ravi de partager la jo
Comment lire une carte arduino à l’aide de LabVIEW

Comment lire une carte arduino à l’aide de LabVIEW

Cette vidéo montre comment lire une carte Arduino à l'aide de LabVIEW. LabVIEW possède une excellente interface qui le rend facile à enregistrer des données provenant d'une carte Arduino. Un des défis plus importants lorsque vous utilisez une carte A
Envoyer les données du capteur (DHT11 & BMP180) à ThingSpeak avec un Arduino, à l’aide de ENC28J60 Ethercard

Envoyer les données du capteur (DHT11 & BMP180) à ThingSpeak avec un Arduino, à l’aide de ENC28J60 Ethercard

Remarque : Cette instructable est pour les vieux ENC26J60 Ethershield et ethercard. Si vous avez le WIZ5100 moderne basé Ethernetshield ou un ESP8266 aller visiter mes autres instructable que je mentionne ci-dessousEnviron un an et demi que j'ai publ
DIY aveugles Smart collent Arduino à l’aide de

DIY aveugles Smart collent Arduino à l’aide de

Salut, amis.Comment vas-tu?J'espère que vous êtes bien !Aujourd'hui dans ce instructable nous allons faire un bâton d'aveugle intelligent pour les personnes ayant une déficience visuelle.Avez-vous remarqué les personnes aveugles ?Leur vie est pleine
Manettes de contrôleur de jeu PS1 avec Arduino

Manettes de contrôleur de jeu PS1 avec Arduino

idée : pour prendre un de mes vieux contrôleurs Playstation 1 et extraire la configuration double joystick afin qu'il peut être facilement utilisé dans un projet de microcontrôleur (dans mon cas : avec l'Arduino) sans pilotes dont vous avez besoin si
Comment contrôler la carte arduino à l’aide d’un téléphone android et un module bluetooth

Comment contrôler la carte arduino à l’aide d’un téléphone android et un module bluetooth

dans ce tutoriel, vous apprendrez comment utiliser un module bluetooth et inventeur app du MIT pour créer une liaison série sans fil entre un téléphone android et une carte arduino.Voici une courte vidéo montrant un exemple d'application que j'ai cré
Contrôler l’arduino à l’aide de Billy par le bus usb

Contrôler l’arduino à l’aide de Billy par le bus usb

C'est mon deuxième instructable. Dans ce instructable je vais montrer comment contrôler la LED à l'aide de Billy.Billy est application qui nous fournit le tableau de bord ainsi que connectivité. qui vous pouvez le télécharger depuis google jeu magasi
Sans fil de contrôle d’Arduino à l’aide de la BeagleBone noir ou framboise Pi

Sans fil de contrôle d’Arduino à l’aide de la BeagleBone noir ou framboise Pi

IntroductionSi vous cherchiez un moyen facile et peu coûteux d'intégrer sans fil un Arduino et un BeagleBone noir (BBB) ou la framboise Pi (RPi) look pas plus loin, ce tutoriel va vous montrer comment !Vous aurez besoinUn microcontrôleur BeagleBone n
À l’aide d’une manette NES pour les émulateurs avec Arduino et traitement

À l’aide d’une manette NES pour les émulateurs avec Arduino et traitement

J'ai trouvé plusieurs façons de brancher une manette NES sur votre ordinateur pour une utilisation comme une manette de jeu émulateur mais aucun ne semblait être simple et compatible avec ce que j'avais sous la main.Celui-ci fonctionne uniquement ave
Contrôler l’Arduino à l’aide de Bluetooth (bilingue Lesson)(Arabic/English)

Contrôler l’Arduino à l’aide de Bluetooth (bilingue Lesson)(Arabic/English)

يتيح لك هذا الدرس التحكم بتشغيل ضوء الليد عن طريق الجوال بنظام الاندرويد و يشرح كيفية عمل لوح التحكم الاردوينو مع قطعة البلوتوثCette leçon vous permettra de contrôler une LED à l'aide d'un téléphone Android avec expliquant comment l'Arduino interagis
Contrôler le Robot Nao, à l’aide d’une manette Xbox

Contrôler le Robot Nao, à l’aide d’une manette Xbox

Dans ce instructable je vais montrer comment simuler un robot NAO en simulateur de Gazebo et Robot Operating System (ROS). ROS est un framework open source de développement et de recherche en robotique. Il fournissent un ensemble riche d'outils et de