Souris PS2

sources : https://github.com/rucek/arduino-ps2-mouse

Les souris optiques peuvent être considérées comme des capteurs de déplacement à deux dimensions.

Matériel testé : souris Trust 15390

Bibliothèque utilisée : https://github.com/rucek/arduino-ps2-mouse

La souris testée est de technologie optique à LED :

  1. Une LED rouge éclaire une surface,
  2. une micro-caméra filme ce support,
  3. un processeur interprète le défilement des aspérités comme un mouvement.

Câblage

Le protocole PS2 utilise 4 fils :

  • 0V ou GND
  • 5V ou VCC
  • Horloge ou CLK
  • Données ou DAT

Identifier les rôles des 4 fils utilisés par le câble PS2 : ils sont parfois explicitement nommés sur la carte de la souris.

Dans les exemples qui suivent, les ports DAT et CLK doivent être connectés aux ports numériques 5 et 6 de l’Arduino.

Programmation

Il faut télécharger les fichiers PS2Mouse.cpp et PS2Mouse.h sur le dépôt arduino-ps2-mouse.
Puis les placer dans le dossier du programme.

Mesure des déplacements

#include "PS2Mouse.h"
#define DATA_PIN 5
#define CLOCK_PIN 6

PS2Mouse mouse(CLOCK_PIN, DATA_PIN);

void setup() {
  Serial.begin(9600);
  mouse.initialize();
}

void loop() {
    MouseData data = mouse.readData();
    if (data.position.x != 0 or data.position.y != 0) {
       Serial.print(data.position.x);
       Serial.print("\t");
       Serial.println(data.positiony);
    }
    delay(20);
}

Mesure de la position

#include "PS2Mouse.h"
#define DATA_PIN 5
#define CLOCK_PIN 6

PS2Mouse mouse(CLOCK_PIN, DATA_PIN);

long int x = 0;   // Position absolue suivant x
long int y = 0;   // Position absolue suivant y

void setup() {
  Serial.begin(9600);
  mouse.initialize();
}

void loop() {
    MouseData data = mouse.readData();
    if (data.position.x != 0 or data.position.y != 0) {
       x += data.position.x;
       y += data.position.y;
       Serial.print(x);
       Serial.print("\t");
       Serial.println(y);
    }
    delay(20);
}

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *