« SE3 PSE Binome2023-3 » : différence entre les versions

De projets-se.plil.fr
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

Titre page.png

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

SE3-pad-CART-DETREZ.pdf

Routage

Detrezcart.png

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:

Zoom atmega.jpg

PCB avec atmega32u4, bouton reset et HWB:

PCB avec atmega.jpg

PCB terminé:

PCB fin.jpg

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.

Correction carte.jpgCorr PCB 2.jpg

À la suite de cette modification la carte fonctionne parfaitement.

Programmation de l'atmega32u4

Installation du bootloader via ISP:

Arduino.jpg

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:

MANETTE BOUTON.jpg

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