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

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 6 : Ligne 6 :
* Recevoir l'info "bouton appuyé"
* Recevoir l'info "bouton appuyé"
* Fonction d'envoi/réception d'un message via USBSend
* Fonction d'envoi/réception d'un message via USBSend
* gcc la libusb
* gcc la libusb*


= CONCEPTION =
= CONCEPTION =
Ligne 73 : Ligne 73 :
=== Installation du bootloader via ISP: ===
=== Installation du bootloader via ISP: ===
[[Fichier:Arduino.jpg|sans_cadre]]
[[Fichier:Arduino.jpg|sans_cadre]]
=== Message d'état des boutons: ===
Information codé sur 8 bits
[[Fichier:MESSAGE.jpg|sans_cadre|457x457px]]
idVendor : 0x057e
idProduct : 0x0306


== Intégration de la manette dans le jeu ==
== Intégration de la manette dans le jeu ==
Ligne 111 : Ligne 102 :
}
}
</syntaxhighlight>
</syntaxhighlight>


= TEST =
= TEST =
Ligne 124 : Ligne 114 :


[[Fichier:Space avec manette.mp4|sans_cadre]]
[[Fichier:Space avec manette.mp4|sans_cadre]]
= À PROPOS DE LA MANETTE =
=== Informations générales: ===
idVendor : 0x057e
idProduct : 0x0306
=== Mode d'emploi: ===
[[Fichier:MANETTE BOUTON.jpg|sans_cadre|366x366px]]
Bouton A : Quitter le jeu
Bouton B: Tirer un missile
Bouton R : Aller vers la droite
Bouton L : Aller vers la gauche


=ARCHIVE =
=ARCHIVE =

Version du 6 juin 2024 à 08:12

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:

À 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