• Première étape
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
    • Serveur Web
  • Arduino & ESP8266
  • Automatisation de la maison
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
  • Serveur Web
  • Première étape
  • Automatisation de la maison
  • Anglais
  • Allemand
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Matériel et accessoires ; GPIO»Utiliser un joystick sur le Raspberry Pi (avec MCP3008)

Utiliser un joystick sur le Raspberry Pi (avec MCP3008)

Facebook Twitter LinkedIn Tumblr Email Reddit
Raspberry Pi Joystick
Share
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

Pour certaines applications, telles que les jeux, un joystick peut être utile, voire nécessaire. Comme celles-ci fonctionnent généralement de manière purement analogique, le signal doit être converti, ce que nous faisons avec la puce MCP3008. La connexion et la lecture d’un joystick sont présentées dans ce tutoriel.

 

Ces joysticks analogiques ont deux axes, qui permettent de faire passer une certaine tension à travers deux potentiomètres (résistance réglable). Pour que la position puisse également être lue numériquement sur le Raspberry, le MCP3008 est nécessaire. Le schéma de ce module est le suivant :

mcp3008-e1397762478714

Sur la partie gauche se trouvent 8 entrées analogiques, dont 3 seulement sont nécessaires.

Sur la partie droite se trouvent les sorties numériques, où la transmission s’effectue via DIN et DOUT.

L’appareil MCP3008 est un convertisseur analogique-numérique de 10 bits. Cela signifie qu’il peut atteindre un maximum de 2 ^ 10, c’est-à-dire 1024 combinaisons de bits (les valeurs de 0 à 1023).

Avec une tension d’entrée de 3,3V, les 3,2mV environ sont des étapes qui peuvent être cartographiées (3,3V).

Accessoires

  • Joystick (analogue)
  • MCP3008 IC (convertisseur analogique-numérique)
  • Breadboard
  • Câble de démarrage mâle – femelle
  • une résistance 10kΩ

 

Installation

Bien que le joystick ait une tension d’entrée de 5V, il fonctionne sans problème en utilisant 3,3V, ce qui est encore plus important lorsqu’on utilise le MCP3008. Le terme SW désigne le bouton qui est activé lorsque vous appuyez sur le joystick. Pour que cela soit 0 ou 1023 (enfoncé ou non enfoncé), une résistance 10kΩ est attachée au VCC. Sans cette résistance, des nombres invalides sont émis et ne peuvent pas être clairement attribués.

 

joystick_Steckplatine

L’affectation de la broche du Raspberry ressemble à ceci :

Raspberry Pi MCP3008
Broche 1 (3,3V) Broche 16 (VDD)
Broche 1 (3,3V) Broche 15 (VREF)
Broche 6 (GND) Broche 14 (AGND)
Broche 23 (SCLK) Broche 13 (CLK)
Broche 21 (MISO) Broche 12 (DOUT)
Broche 19 (MOSI) Broche 11 (DIN)
Broche 24 (CE0) Broche 10 (CS/SHDN)
Broche 6 (GND) Broche 9 (DGND)

En suivant la connexion au joystick :

RPi / MCP3008 Joystick
 Raspberry Broche 6 (GND)  GND
 Raspberry Broche 1 (3,3V)  +5V
Broche 1 (CH0)  SW
Broche 2 (CH1)  VRx
Broche 3 (CH2)  VRy

 

Essais

Dans mon scénario, j’utilise la bibliothèque SpiDev. Si vous ne l’avez pas encore installée, vous devriez le faire avant de tester le joystick.

Comme mentionné précédemment, le MCP3008 renvoie une valeur comprise entre 0 et 1023. Si le joystick est à l’état « inactif », c’est-à-dire au milieu, environ 512 sera renvoyé. 0 est renvoyé à une extrémité d’un axe et 1023 à l’autre extrémité (à quelle extrémité cela dépend de la façon dont vous regardez le joystick).

Vous pouvez télécharger le fichier test

wget http://www.tutorials-raspberrypi.de/wp-content/uploads/scripts/joystick_test.py

ou le créer vous-même :

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/python
import spidev
import os
import time
 
# Define Axis Channels (channel 3 to 7 can be assigned for more buttons / joysticks)
swt_channel = 0
vrx_channel = 1
vry_channel = 2
#Time delay, which tells how many seconds the value is read out
delay = 0.5
 
# Spi oeffnen
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz=1000000
# Function for reading the MCP3008 channel between 0 and 7
def readChannel(channel):
  val = spi.xfer2([1,(8+channel)<<4,0])
  data = ((val[1]&3) << 8) + val[2]
  return data
 
 
# endless loop
while True:
  # Determine position
  vrx_pos = readChannel(vrx_channel)
  vry_pos = readChannel(vry_channel)
  # SW determine
  swt_val = readChannel(swt_channel)
  # output
  print("VRx : {}  VRy : {}  SW : {}".format(vrx_pos,vry_pos,swt_val))
  # wait
  time.sleep(delay)

Vous pouvez ensuite commencer le scénario par

sudo python joystick_test.py

et déplacez le joystick. Vous constaterez que 1024 étapes sont probablement trop, car la précision des doigts sur un petit joystick peut difficilement être atteinte. C’est pourquoi je recommanderais de définir des zones dans une application plutôt que de tester des valeurs individuelles (à part 0/1023).

contrôleur contrôleur ps2 gpio Joystick MCP3008 python spidev
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous Article7 segments d’affichage (anode) avec MAX7219 / MAX7221 et Raspberry Pi
Next Article ESP8266 Access Point: Günstigen Wlan Repeater selber bauen

Related Posts

Connecter un clavier Raspberry Pi – Code Lock

Enregistrer les données des capteurs Raspberry Pi avec ThingSpeak et les analyser

Construire un capteur de porte / fenêtre Raspberry Pi avec Reed Relais

Utiliser Raspberry Pi comme récepteur radio (autoradio FM, PC de voiture)

Leave A Reply Cancel Reply

Création d’un certificat SSL Raspberry Pi gratuit avec Let’s Encrypt

Contrôlez les prises sans fil Raspberry Pi (433MHz) – Tutoriel

Télécommandez une Raspberry Pi avec un émetteur radio de 433Mhz

Comment réaliser un émetteur radio Raspberry Pi

Construire un capteur de porte / fenêtre Raspberry Pi avec Reed Relais

Utilisation d’un capteur de distance Raspberry Pi (capteur ultrasonique HC-SR04)

ABONNEZ-VOUS MAINTENANT
Et recevez de nouveaux tutoriels dans votre boîte de réception.
Cliquez ici pour soumettre!

Merci!

Nous vous contacterons bientôt.

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Politique de confidentialité
  • Conditions de service & Politique sur les cookies

Type above and press Enter to search. Press Esc to cancel.