Shield Joystick pour Arduino, tutoriel

Utilisation de capteurs et composants électroniques avec Arduino.
Une fiche de tutoriel pour chaque.

Shield Joystick pour Arduino, tutoriel

Messagepar tiptop » Ven 23 Aoû 2013 16:26

Shield Joystick pour Arduino, tutoriel

Image.Image

Composants utilisés


En option, compatibles directement avec ce shield
  • 1 Ecran LCD graphique de 48 x 84 pixels (Nokia 5110).
  • 1 module Bluetooth
  • 1 module de radio-télécommande RF24L01

Si on n'a pas besoin du shield complet, le joystick est disponible séparément.


Principe de fonctionnement
Ce shield Joystick s'emboîte directement sans soudures sur une carte Arduino Uno.
Il est livré monté, prêt à l'emploi, et compatible broche à broche.

Il comporte un joystick et 6 boutons, avec en plus 3 interfaces pré-câblées:
  • Une interface pour écran à cristaux liquides Nokia 5110 LCD
  • une interface de radiofréquence nRF24L01 pour commande en 2.4 GHz
  • une interface de commande Bee blueetooth.

Il permet donc de développer des jeux ou applications de commande par joystick et boutons, qui peuvent communiquer sans fil (avec le nRF24L01 ou par bluetooth) et afficher sur un écran graphique LCD.

Description de la carte
Image

  • 1 joystick deux axes X-Y avec 1 interrupteur à poussoir
  • 4 gros boutons poussoirs momentanés en couleur A B C D
  • 2 petits boutons E F
  • une prise pour monter un dispositif bluetooth (broches R T + -)
  • une prise pour bus I2C externe (broches SCL, SDA, GND, +5V)
  • une prise pour écran Nokia 5110 (8 broches 3v3, GND, di3, di2, di1, di0, d9, 3v3, (key))
  • une prise pour module de radio-commande nRF24L01 (8 broches)
  • un interrupteur 3.3V / 5V pour pouvoir utiliser ce module en 3.3V avec des plate formes comme le SMT32
  • 6 paires de broches (jaune) de reprise des capteurs :
    V A C E K X
    G B D F 3 Y
    Notations : V = tension 5V, G = ground, A B C D E F = les 6 boutons, K=appui sur le joystick, 3 = 3.3V, X et Y sorties analogiques du joystick

Brochage du Shield --> Arduino
  • Boutons ABCD sur pins digitales A-D2, B-D3, C-D4, D-D5
  • Boutons EF sur pins digitales E-D6, F-D7
  • Potentiomètres XY sur pins analogiques X-A0 Y-A1
  • NRF24L01 sur pins IRQ-D8, CE-D9, CSN-D10, MOSI-D11, MISO-D12, CLK-13
  • BT sur RXD-D1, TXD-D0
  • Interrupteur à placer sur 5V pour utilisation avec une carte Uno.

Exemple de code
Il n'y a pas besoin de librairie spécialisée.

analogRead() retourne une valeur comprise entre 0-1023 qui donne la position du joystick (potentiomètre) selon chaque axe (et retourne environ 511 vers la position de repos centrale)

map() permet éventuellement de recentrer cette échelle de valeurs.

On active les résistance de pull up pour lire les boutons poussoirs, qui passent à LOW quand on appuie dessus.

Ce programme lit les boutons ABCD, EF, l'appui sur le joystick et sa position XY.

Code: Tout sélectionner
//====Shields avec Joystick et 4 +2 boutons poussoirs
// tiptopboards 22 08 2013
// C.Rolland
//====================================================
//Source http://www.elecfreaks.com/1999.html
//
// Based on original example by Ryan Owens
// ===================================================

// pin  Arduino associées aux entrées
//brochage boutons A=2 B=3 C=4 D=5 E=6 F=7 Joy=8
const byte pinA = 2;
const byte pinB = 3;
const byte pinC = 4;
const byte pinD = 5;
const byte pinE = 6;
const byte pinF = 7;
const byte pinJoystick = 8;

const byte Pin_Analog_X = 0;  //Joystick sur pin 0 et 1 analogiques
const byte Pin_Analog_Y = 1;


void setup() {
  Serial.begin(9600);
   // Les boutons sont des INPUT
   // Active les résistances internes de l'Arduino en pull-up
   // HIGH bouton non appuyé, LOW appuyé
     
  pinMode(pinA, INPUT); 
  digitalWrite(pinA, HIGH);
  pinMode(pinB, INPUT); 
  digitalWrite(pinB, HIGH);
  pinMode(pinC, INPUT); 
  digitalWrite(pinC, HIGH);
  pinMode(pinD, INPUT); 
  digitalWrite(pinD, HIGH);
  pinMode(pinE, INPUT); 
  digitalWrite(pinE, HIGH);
  pinMode(pinF, INPUT); 
  digitalWrite(pinF, HIGH);
  pinMode(pinJoystick, INPUT); 
  digitalWrite(pinJoystick, HIGH); 
}


void loop() {
 // Renvoie vers la console l'état du joystick et des boutons
  Serial.print(digitalRead(pinA));
 Serial.print(digitalRead(pinB));
 Serial.print(digitalRead(pinC));
 Serial.print(digitalRead(pinD));
 Serial.print(" ");
 Serial.print(digitalRead(pinE));
 Serial.print(digitalRead(pinF));
 Serial.print(" ");
 Serial.print(digitalRead(pinJoystick));
 
  Serial.print("xy ");  //Position du potentiomètre
  Serial.print(analogRead(Pin_Analog_X));
  Serial.print(" ");
  Serial.print(analogRead(Pin_Analog_Y));
   
  Serial.println();
}



Références
Joystick Shield Quickstart Guide (en anglais)
http://www.elecfreaks.com/1999.html
https://www.sparkfun.com/tutorials/171#processing
tiptopboards - admin
Avatar de l’utilisateur
tiptop
Administrateur du site
 
Messages: 88
Inscription: Mar 13 Aoû 2013 20:38
Localisation: 38

Retourner vers Capteurs et composants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité