« SE3 PSE Binome2023-3 » : différence entre les versions
Aller à la navigation
Aller à la recherche
Ligne 111 : | Ligne 111 : | ||
[[Fichier:Vidéo LED bouton.mp4|sans_cadre]] | [[Fichier:Vidéo LED bouton.mp4|sans_cadre]] | ||
=== Vidéo de test du Space Invaders avec la manette: === | === Vidéo de test du Space Invaders avec la manette sans LEDs: === | ||
[[Fichier:Space avec manette.mp4|sans_cadre]] | [[Fichier:Space avec manette.mp4|sans_cadre]] | ||
=== Vidéo de test du Space Invaders avec la manette avec LEDs: === | |||
[[Fichier:Manette avec led.mp4|sans_cadre]] | |||
= À PROPOS DE LA MANETTE = | = À PROPOS DE LA MANETTE = |
Version du 6 juin 2024 à 15:43
TO DO
- implémenter minimal dans joystick
- Recevoir l'info "bouton appuyé"
- Fonction d'envoi/réception d'un message via USBSend
- gcc la libusb*
CONCEPTION
Schématique
Routage
PINOUT
NOM | PIN |
---|---|
BP_L | PD2 |
BP_A | PC7 |
BP_B | PC6 |
BP_D | PD7 |
BP_U | PD5 |
BP_R | PD6 |
LED2 | PB4 |
LED3 | PB5 |
RÉALISATION
Brasage des composants sur le PCB
Brasage atmega32u4 sur le PCB:
PCB avec atmega32u4, bouton reset et HWB:
PCB terminé:
Correction de conception du PCB:
Suite à une mécompréhension du fonctionnement des boutons, ceux-ci sont reliés nativement au +5v et non à la masse.
Nous avons donc coupé le cuivre entre J3 et J4 (empreintes de servomoteur que nous n'utilisons pas) puis nous avons relié le cuivre à la masse de J3 afin de corriger notre erreur.
À la suite de cette modification la carte fonctionne parfaitement.
Programmation de l'atmega32u4
Installation du bootloader via ISP:
Intégration de la manette dans le jeu
/*Ce code est purement à titre démonstratif pour ajouter la manette dans le jeu, il ne s'agit pas du jeu fonctionnel*/
int game()
{
SDL_Joystick* Joystick = NULL; //On définit une manette.
Joystick = SDL_JoystickOpen(0); //On choisit sa manette, 0 étant la première manette sur le PC.
while(1)
{
int b_tir = SDL_JoystickGetButton(Joystick, 1);
/*Cette fonction prend en paramètre la manette ainsi que le bouton et renvoie 1 si le bouton est appuyé, 0 sinon.*/
int b_quit = SDL_JoystickGetButton(Joystick, 0); //idem
int b_x = SDL_JoystickGetAxis(Joystick, 0);
/*Cette fonction prend en paramètre la manette ainsi que l'axe et retourne 32768 si l'axe est totalement à droite (haut pour Y)
et -32768 à gauche (bas pour Y). Au point mort, l'axe retourne 0.*/
if(b_quit == 1) quitter_le_jeu();
if(b_x > 0) deplacement_monstres_droite();
if(b_x < 0) deplacement_monstres_gauche();
if(b_tir == 1) tir_missile();
}
return 0;
}
TEST
Vidéo de test du clignotement des LEDs de vie:
Vidéo de test d'allumage d'une LED avec un bouton:
Vidéo de test du Space Invaders avec la manette sans LEDs:
Vidéo de test du Space Invaders avec la manette avec LEDs:
À PROPOS DE LA MANETTE
Informations générales:
idVendor : 0x057e
idProduct : 0x0306
Mode d'emploi:
Bouton A : Quitter le jeu
Bouton B: Tirer un missile
Bouton R : Aller vers la droite
Bouton L : Aller vers la gauche
ARCHIVE
Archive KiCad Manette : Fichier:CARTDETREZ.zip
Archive programmation USB : https://archives.plil.fr/vdetrez/PSE_Manette_CART_DETREZ.git
Tuto : https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme033.html