Arduino Processing et JoyStick

JoyStick

PIN DESCRIPTION RANG
GND Ground-liée au GND de la carte 0V
+5V +5V-Liée à la pin +5v de la carte 5v
VRx délivre une tension proportionelle à la position x de 0 à 5V
VRy délivre une tension proportionelle à la position y de 0 à 5V
SW délivre un signale numérique 0=> bouton clos
1=> bouton ouvert

 

  • Valeur du  potentiométre interne : 10k
  • épaisseur du pin de soudage 2.54mm
  • Dimensions: 1.57 in x 1.02 in x 1.26 in (4.0 cm x 2.6 cm x 3.2 cm)
  • Température : 0 to 70 °C

Dans  notre cas  la carte arduino uno va convertir la tension  analogique de  VRx et VRy en valeurs binaires de 0 à 1023  soit 1024 valeurs differentes soit une sensisiblité de  4.8mV

Code Arduino

int xCor = 0 ; // l'axe des x  
int yCor = 0 ; // l'axe des y
int SW = 0 ; // valeurs des boutons
void setup()  
{ 
  analogReadResolution(9);
  Serial.begin(9600) ; // Définir le  vitesse d'échange  sur le port série
  pinMode(2,INPUT) ; // Lire  le  boutton  SW
} 
void loop() 
{ // Lire les valeurs de A0, A1 et SW
  xCor = analogRead(A0);  
  yCor = analogRead(A1);  
  SW = digitalRead(2);  
  //on envoi les infos  en format decimale séparés par  une virgule 
  Serial.print(xCor,DEC);
  Serial.print(",");
  Serial.print(yCor,DEC);
  Serial.print(",");
  Serial.print(SW);
  Serial.print("\n");// retour à la ligne  
  delay(10);// Attente pur éviter  la redandance
}

Code Processing

import processing.serial.*; //import de la biblio Serie
Serial monPort;
int x;int y;int b; // variable x,y et b 
PFont f; // definie la variable  Police
String nomPort;
String lec;
void setup()
{
  size ( 512, 512 ) ; // taille de la  fenetre
  monPort = new Serial(this, Serial.list()[0], 115200);//ouvrire  le  port  monPort.bufferUntil('\n');  
  // definie taile et type de la police
  f = createFont("Arial", 16, true); // Arial, 16px, anti-aliasing
  textFont ( f, 16 ) ; // taille 16px
}

void draw()
{
  background(100) ; // la couleur de fond  définite noire 
  clear() ; // efface  le canvas  
  fill(155) ; // la couleur de remplissage 
  if (b == 0) // si le boutton est  préssé
  {
    stroke(255);
    line(x/2,0,x/2,height);
    line(0,y/2,width,y/2);
    ellipse(x/2,y/2, 40, 40); //le rayon de l'ellipse est plus grand 50px 
    fill(0);
    ellipse(x/2,y/2,10,10);
    fill(155);
    text("X="+(1023-x)+" Y="+(1023-y),10,height-20);// On écris les coordonnées
  } else{
    stroke(255);line(x/2,0,x/2,height);line(0,y/2,width,y/2);
    ellipse(x/2,y/2, 40, 40);fill(0);
    ellipse(x/2,y/2,5,5);fill(155);
    text("X="+(1023-x)+" Y="+(1023-y),10,height-20);// On écris les coordonnées
  }  
}
void serialEvent( Serial monPort) // Gére les évenements  du port série
{
  lec = monPort.readStringUntil('\n');// lire jusqu'au retour à la ligne 
  if (lec != null)
  {
    lec = trim(lec); //nettoie les string des éspace en  plus 
    int[] vals = int(splitTokens(lec, ","));// sépare le string  en caractére singulier 
    x = vals[0];y = vals[1] ;b = vals[2];
  }
}

 

Les frais de transport ne sont pas inclus

Composant Quantité Prix(DTN TTC)
Arduino Uno 1 37
Cable connexion femelle femelle (10) 1 1.5
JoyStick 1 11
Totale 49.5 DTN TTC

Smart Innovation