start:arduino:manette_ps2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
start:arduino:manette_ps2 [2022/05/09 16:39] – [Explications broches de sorties] gerardadmin | start:arduino:manette_ps2 [2022/08/01 09:08] – [Robot Arduino avec manette PS2 (Joystick PlayStation 2)] gerardadmin | ||
---|---|---|---|
Ligne 10: | Ligne 10: | ||
=== Explications broches de sorties === | === Explications broches de sorties === | ||
- | -- 1 DONNÉES : il s'agit de la ligne de données entre la manette et la PS2. Il s'agit d'une sortie à collecteur ouvert et nécessite une résistance pull-up (1 à 10k, peut-être plus). (Une résistance de rappel est nécessaire car le contrôleur ne peut connecter cette ligne qu'à la terre ; il ne peut pas réellement mettre de tension sur la ligne). | + | -- DONNÉES : il s'agit de la ligne de données entre la manette et la PS2. Il s'agit d'une sortie à collecteur ouvert et nécessite une résistance pull-up (1 à 10k, peut-être plus). (Une résistance de rappel est nécessaire car le contrôleur ne peut connecter cette ligne qu'à la terre ; il ne peut pas réellement mettre de tension sur la ligne). |
- | -- 2 COMMANDE : Il s'agit de la ligne de données de la PS2 à la manette. | + | -- COMMANDE : Il s'agit de la ligne de données de la PS2 à la manette. |
- | -- 3 PUISSANCE DU MOTEUR DE VIBRATION | + | -- PUISSANCE DU MOTEUR DE VIBRATION |
- | -- 4 GND : masse | + | -- GND : masse |
- | -- 5 VCC : VCC peut varier de 5 V à 3 V. | + | -- VCC : VCC peut varier de 5 V à 3 V. |
- | -- 6 ATT : ATT est utilisé pour attirer l' | + | -- ATT : ATT est utilisé pour attirer l' |
- | -- 7 CLK : 500 kH/z, normalement activé. La communication semble être un bus SPI. | + | -- CLK : 500 kH/z, normalement activé. La communication semble être un bus SPI. |
- | -- 8 Pas connecté | + | -- Pas connecté |
- | -- 9 ACK : Reconnaître le signal du contrôleur à la PS2. Cette ligne normalement haute chute environ 12 us après chaque octet pendant un demi-cycle d' | + | -- ACK : Reconnaître le signal du contrôleur à la PS2. Cette ligne normalement haute chute environ 12 us après chaque octet pendant un demi-cycle d' |
+ | === Signaux PS2 :=== | ||
+ | Le contrôleur sans fil PS2 communique avec Arduino en utilisant un protocole qui est essentiellement SPI. | ||
+ | La station de jeu envoie un octet en même temps qu' | ||
+ | Il y a une horloge (SCK) pour synchroniser les bits de données sur deux canaux : DATA et CMD. De plus, il existe un canal " | ||
+ | L' | ||
+ | ==== Interfaçage de la manette | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | Nous avons interfacé la manette PS2 avec un Arduino. À chaque pression sur un bouton, l' | ||
+ | |||
+ | === Détails de connexion :=== | ||
+ | |||
+ | La ligne CLK et les lignes ATT du récepteur PS2 sont maintenues normalement hautes. L'ATT fonctionne comme la ligne Slave Select sous SPI. Vous le tirez vers le bas pour dire au contrôleur que vous lui parlez, puis le renvoyez vers le haut une fois qu'un cycle de communication est terminé. CMD est la ligne de données vers le contrôleur et DATA est les données provenant du contrôleur. Ici, dans notre application, | ||
+ | |||
+ | <code c PS2_Arduino.ino> | ||
+ | #include < | ||
+ | PS2X ps2x; /* create PS2 Controller Class*/ | ||
+ | byte Type = 0; | ||
+ | byte vibrate = 0; | ||
+ | int rx=0, | ||
+ | |||
+ | void setup(){ | ||
+ | | ||
+ | | ||
+ | Type = ps2x.readType(); | ||
+ | | ||
+ | |||
+ | Serial.println(" | ||
+ | | ||
+ | Serial.println(" | ||
+ | delay(1000); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | void loop(){ | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | ly = ps2x.Analog(PSS_LY); | ||
+ | lx = ps2x.Analog(PSS_LX); | ||
+ | ry = ps2x.Analog(PSS_RY); | ||
+ | rx = ps2x.Analog(PSS_RX); | ||
+ | |||
+ | | ||
+ | Serial.println(" | ||
+ | | ||
+ | Serial.print(" | ||
+ | | ||
+ | | ||
+ | | ||
+ | Serial.print(" | ||
+ | | ||
+ | Serial.println(" | ||
+ | | ||
+ | | ||
+ | | ||
+ | Serial.println(" | ||
+ | | ||
+ | Serial.println(" | ||
+ | | ||
+ | | ||
+ | | ||
+ | Serial.println(" | ||
+ | | ||
+ | Serial.println(" | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | if(ps2x.Button(PSB_START)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_SELECT)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_PAD_UP)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_PAD_RIGHT)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_PAD_LEFT)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_PAD_DOWN)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_L1)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_R1)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_L2)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_R2)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_L3)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_R3)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_GREEN)) | ||
+ | | ||
+ | if(ps2x.Button(PSB_BLUE)) | ||
+ | | ||
+ | | ||
+ | | ||
+ | if(ps2x.Button(PSB_PINK)) | ||
+ | | ||
+ | delay(700); | ||
+ | } | ||
+ | else; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Liens Manette PS2 <--> Arduino | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | ===== PS2 - Touches ===== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | Les fonctions les plus pratiques de cette librairie sont : | ||
+ | |||
+ | ***ps2x.config_gamepad(clock, | ||
+ | La fonction définit la broche du contrôleur et la sensibilité à la pression et aux vibrations des moteurs. Si vous voulez que les touches soient insensibles à la pression ou que les moteurs n' | ||
+ | |||
+ | ***ready(); | ||
+ | La fonction détermine le type de contrôleur détecté. 0 signifie que le contrôleur n'est pas détecté correctement, | ||
+ | |||
+ | ***read_gamepad(boolean motor1, byte motor2); | ||
+ | La fonction commencer à lire l' | ||
+ | |||
+ | ***Button (but type); | ||
+ | la fonction renvoie 1 lorsque la touche spécifique de l' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ===== Robot Arduino avec manette PS2 (Joystick PlayStation 2) ===== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ===== Radiocommande PS2 arduino nrf24l01 ===== | ||
+ | |||
+ | [[https:// |
/home/chanteri/www/fablab37110/data/pages/start/arduino/manette_ps2.txt · Dernière modification : 2023/01/27 16:08 de 127.0.0.1