[Programmation] Arduino: programmation d'une manette de jeu
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Arduino: programmation d'une manette de jeu



  1. #1
    Authotin

    Arduino: programmation d'une manette de jeu


    ------

    Bonjour,

    Dans le cadre de nos TPE en classe de 1ère, nous avons décidé d'étudier le fonctionnement d'une manette de jeu, et de construire la notre.
    Après nous être renseignés, nous avons trouvé comment celles-ci fonctionnait et pensons être capables de la cabler. Cependant, deux problèmes s'opposent à nous:
    En premier, nous n'avons trouvé qu'une façon de programmer le joystick de la manette, mais celle-ci nous permet de faire fonctionner des moteurs. Or, nous souhaitons envoyer des données selon la position du joystick, non pas envoyer une tension à une borne.
    En second, nous cherchons dans cette suite à traduire les données envoyées par la manette en données numériques lisibles par l'ordinateur, comme le font les manettes USB (avec reconnaissance dans les jeux, par exemple)...
    Nous nous trouvons dans une impasse, car nous n'avons que des connaissances d'Arduino très limitées, et même les TP proposés par les professeurs ne sont pas en mesure de nous aider autre qu'à comprendre l'organisation du langage de programmation.
    La question sur forum est un peu la dernière solution que nous avons trouvés.

    Merci d'avance pour votre aide.

    -----

  2. #2
    vincent66

    Re : Arduino: programmation d'une manette de jeu

    Bonjour et bienvenue sur futura !
    Et la question précise est...?

    J'ai moi aussi une question à poser :
    Dans la propagande pro arduino j'ai lu récemment "arduino permet à des enfants de dix ou douze ans de faire aussi bien que des ingénieurs"...
    Alors pourquoi sommes-nous, pas tous connaisseurs d'arduino, le dernier recours ?!...

    Vincent
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  3. #3
    f6bes

    Re : Arduino: programmation d'une manette de jeu

    Citation Envoyé par vincent66 Voir le message
    Dans la propagande pro arduino j'ai lu récemment "arduino permet à des enfants de dix ou douze ans de faire aussi bien que des ingénieurs"...
    Alors pourquoi sommes-nous, pas tous connaisseurs d'arduino, le dernier recours ?!...

    Vincent
    Bonsoir,
    Trés BONNE question !!
    Une devise qui me viens à l'esprit :
    " Du moment que tas l'arduino..fini le chaos..tout est beau !" signé...Léonardo !

    Bonne soirée
    Dernière modification par f6bes ; 30/11/2015 à 18h21.

  4. #4
    Authotin

    Re : Arduino: programmation d'une manette de jeu

    Très bien, merci de ces devises si bien placées, mais cela n'apporte aucune aide à notre problème. Futura-Science ne serait donc pas la solution pour demander de l'aide sur Arduino?
    En attente de réponses plus utiles...

  5. A voir en vidéo sur Futura
  6. #5
    antek

    Re : Arduino: programmation d'une manette de jeu

    Citation Envoyé par Authotin Voir le message
    En attente de réponses plus utiles...
    En attente de question plus précise . . .

    Parceque de ce que j'ai compris, il faudrait vous expliquer comment :
    - convertir une tension avec un CAN
    - gérer le protocol USB pour envoyer les données vers un ordinateur
    - utiliser et programmer un arduino

    C'est un peu trop pour expliquer dans un dialogue forum en partant de rien.

  7. #6
    Authotin

    Re : Arduino: programmation d'une manette de jeu

    L'utilisation et la programmation d'Arduino est acquise, nous savons comment acquérir une tension à partir de boutons, ce n'est pas un problème (utilisation de la commande analogRead). Nous avons juste besoin d'explication par rapport à la transmission de cette donnée à l'ordinateur. En effet, lorsqu'on a acquéri la tension, le programme s'"arrête", il ne sert plus à rien. On peut seulement, avec ce que nous savons, utiliser cette tension pour faire avancer/reculer des moteurs ou encore allumer une LED, mais pas utiliser cette information pour effectuer une action dans un jeu... Nous avons pû voir qu'il est possible d'associer une valeur à chaque type de tension obtenue sur le potentiomètre ou sur les boutons, pour pouvoir avec un logiciel les placer sur des touches d'une manette "simulée". Les professeurs à qui nous pouvons nous référencer ont quand à eux simplement répondu qu'il était question de branchement en série, ce qui ne nous aide pas (nous savons ce qu'est un branchement série, mais nous ne savons vraiment pas ce que cela a à voir avec le programme, mis à part le branchement sur les bornes de la carte).
    Cette explication n'a rien de très précis - comme je vous l'ai dit, nous somme débutants - mais elle résume assez bien ce que l'on souhaiterait obtenir, mais nous ne savons pas comment l'obtenir.

  8. #7
    Authotin

    Re : Arduino: programmation d'une manette de jeu

    Après réflexion, nous n'avons en effet pas donné le point exact où nous en étions. Voici ce que nous savons:
    • Certains sites parlent de "libraires permettant de communiquer avec le sérial". Cette formulation nous est incompréhensible...
    • D'autres évoquent un rapport avec le "firmware Atmega328" (https://blog.arduino.cc/2010/10/24/a...o-as-joystick/), qui semble être le microcontrolleur déjà intégré dans la carte Arduino UNO
    • Transmettre les données de la manette à un jeu reviendrait à faire reconnaître ces actions par DirectX
    • Changer les données reçues pour qu'elles simulent les touches du clavier nous permettraient de faire fonctionner la manette sur le PC (mais cela semblerait ne fonctionner qu'avec une Arduino Leonardo, qui semble encore une fois reliée avec le Atmega328 (http://www.practicalarduino.com/proj...l-usb-keyboard)

    Nous allons donc sûrement avoir besoin de passer par les librairies et par le firmware Atmega328.

    Voici le programme que nous avons trouvé, qui servirait à lire les valeurs sur les potentiomètres, pour allumer la LED pendant un temps égal à ces valeurs, il nous a permis de mieux comprendre le fonctionnement de la commande "AnalogRead":

    Code:
    int ledPin = 13;
     int joyPin1 = 0;                 // variable associée au joystick 1
     int joyPin2 = 1;                 //     "        "           "    2
     int value1 = 0;                  // variable qui va lire la valeur sur le joystick 1
     int value2 = 0;                  //     "        "           "              "      2
    
     void setup() {
      pinMode(ledPin, OUTPUT);              // place la Led en sortie
      Serial.begin(9600);
     }
    
     int treatValue(int data) {
      return (data * 9 / 1024) + 48;
     }
    
     void loop() {
      // lit la valeur du potentiomètre (joystick) 1
      value1 = analogRead(joyPin1);   
      // petite pause pour laisser au programme le temps de réfléchir
      delay(100);             
      //lit la valeur du potentiomètre 2
      value2 = analogRead(joyPin2);   
    
      digitalWrite(ledPin, HIGH);           //allume la LED pendant
      delay(value1);                        //(Value1) millisecondes
      digitalWrite(ledPin, LOW);            //éteint la LED pendant
      delay(value2);                                 //(Value2) millisecondes
      Serial.print('J');                            // ?
      Serial.print(treatValue(value1));     // ?
      Serial.println(treatValue(value2));   // ?
     }
    (Toutes les instructions Serial nous sont incompréhensibles)

    Cela fait un résumé de ce que nous savons sur notre problème.
    Dernière modification par Antoane ; 14/12/2015 à 16h07. Motif: Remplacement des balises [QUOTE] par [CODE].

  9. #8
    Yoruk

    Re : Arduino: programmation d'une manette de jeu

    C'est effectivement du coté de la liaison série qu'il te faut chercher, regarde un peu ça :

    https://www.arduino.cc/en/Reference/Serial

    https://www.arduino.cc/en/Serial/Print

    Il faut aussi bricoler quelque chose coté ordinateur, hein.
    La robotique, c'est fantastique !

  10. #9
    antek

    Re : Arduino: programmation d'une manette de jeu

    Citation Envoyé par Authotin Voir le message
    Les professeurs à qui nous pouvons nous référencer ont quand à eux simplement répondu qu'il était question de branchement en série, ce qui ne nous aide pas (nous savons ce qu'est un branchement série, mais nous ne savons vraiment pas ce que cela a à voir avec le programme, mis à part le branchement sur les bornes de la carte).
    Le prof n'aurait pas dit "liaison série" ? Communication USB ou RS232 avec l'ordinateur ?

  11. #10
    Authotin

    Re : Arduino: programmation d'une manette de jeu

    La carte arduino est de toute manière branchée en USB à l'ordinateur.
    Donc, on ne peut pas véritablement utiliser une carte Arduino comme périphérique USB (Manette, clavier...) sans "bidouiller" l'ordinateur ou la carte?

  12. #11
    Yoruk

    Re : Arduino: programmation d'une manette de jeu

    ça dépend de ce que tu appelles bidouiller... Quand tu branches la carte sur le PC, elle est reconnue comme un port série, avec lequel tu peux converser avec le logiciel ad-hoc.

    Après, il est possible, (pas avec la arduino) de créer un périphérique USB en partant de rien, mais ça se complique...!

    Le plus simple dans ton cas est de passer par la liaison série.
    La robotique, c'est fantastique !

Discussions similaires

  1. Programmation Arduino
    Par -mathis- dans le forum Électronique
    Réponses: 0
    Dernier message: 20/05/2015, 17h18
  2. Programmation Arduino
    Par powerPic dans le forum Électronique
    Réponses: 3
    Dernier message: 05/05/2015, 22h34
  3. Arduino manette PS2
    Par oliv6973 dans le forum Électronique
    Réponses: 0
    Dernier message: 30/04/2015, 03h53
  4. Contrôler une manette avec un Arduino ?
    Par Geletoast dans le forum Électronique
    Réponses: 1
    Dernier message: 17/03/2015, 07h12
  5. programmation arduino
    Par mondherhammami dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 11/06/2014, 18h31
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...