Partage
  • Partager sur Facebook
  • Partager sur Twitter

[projet] le A.P.C.C (le Arduino PC controller)

Anonyme
    26 septembre 2016 à 18:51:11

    Bonjour à tous, aujourd'hui je vais vous présenter mon nouveau projet arduino: le A.P.C.C (nom provisoire): le Arduino PC Controller.

    C'est une manette de jeu pour PC (en USB) programmée par mes soins en C/C++ sur une arduino esplora.

    Mon projet en est à sa version 2.0, voici ses fonctionnalités:

    • - Contrôle de la souris (et donc de la camera dans certains jeux) par le joystick     
    • - Réglage de la sensibilité du joystick avec le potentiomètre;      
    • - Bouton bas pour sauter (= touche espace)  
    • - Bouton gauche pour clic gauche
    • - Bouton du haut pour viser (= clic droit)
    • - On avance, recule, et bouge sur les cotés en penchant la manette (accéléromètre)
    • - Bouton droit pour se baisser (= SHIFT)  
    • - Si l'on crie trop fort sur la manette, une led rouge s'allume et un message s'écrit sur le port série  
    • - Si la lumière est trop faible, une led bleue s'allume pour éclairer la manette.
    Prochaines améliorations:
    • 1) Un boiter 
    •                                               2) A vous de proposer des améliorations.

    Le code source: (je précise que je ne suis pas un expert)

    #include <Esplora.h>
    #include <Mouse.h>
    #include <Keyboard.h>
    
    // BY S01DEN LE 18/08/16
    // version 2.0
    
    void setup()
    {  
      Serial.begin(9600);
      Mouse.begin();
      Keyboard.begin();
    }
    
    void loop() 
    { 
    // *********** CONTROLES ******************** //
    
        int sensibiliteMap = Esplora.readSlider(); 
        int sensibilite = map(sensibiliteMap, 1023, 1, 1, 150);
        int x = Esplora.readJoystickX();
        int y = Esplora.readJoystickY();
        int mouseX = map(x, -512, 512, 9, -10); 
        int mouseY = map(y, -512, 512, -10, 10); 
        
        Mouse.move(mouseX, mouseY, 0);
    
      if (Esplora.readButton(3)==LOW)   
      {
        Mouse.press(MOUSE_RIGHT);
      }
      else
      {
        Mouse.release(MOUSE_RIGHT);
      }                                                                                                 
      if (Esplora.readButton(3)==LOW)
      {
        Keyboard.press(87);
      }
      else
      {
        Keyboard.release(87);
      }
      if (Esplora.readAccelerometer(X_AXIS)>=50)
      {
        Keyboard.press('a'); 
      }
      else
      {
        Keyboard.release('a');
      }
       if (Esplora.readAccelerometer(X_AXIS)<=-50)
      {
        Keyboard.press('d'); 
      }
      else
      {
        Keyboard.release('d');
      }
       if (Esplora.readAccelerometer(Y_AXIS)<=-50)
      {
        Keyboard.press('w'); 
      }
      else
      {
        Keyboard.release('w');
      }
       if (Esplora.readAccelerometer(Y_AXIS)>=110)
      {
        Keyboard.press('s'); 
      }
      else
      {
        Keyboard.release('s');
      }
        if (Esplora.readButton(2)==LOW)
      {
        Mouse.press(MOUSE_LEFT);
      }
      else
      {
        Mouse.release(MOUSE_LEFT);
      }
        if (Esplora.readButton(4)==LOW)
      {
        Keyboard.press(KEY_LEFT_SHIFT);
      }
      else
      {
        Keyboard.release(KEY_LEFT_SHIFT);
      }
      if (Esplora.readButton(1)==LOW)
      {
        Keyboard.press(32);
      }
      else
      {
        Keyboard.release(32);         
      }
    
      delay(sensibilite);
      
    // ************************************************* //                  
    
    // ************* POUR LES GAMEURS NOCTURNES ***************** //           
    
        byte intensiteLumineuse = Esplora.readLightSensor();
        
      if (intensiteLumineuse <= 100)
      {
        Esplora.writeBlue(255); 
      }
      else
      {
        Esplora.writeRGB(0, 0, 0); 
      }
    
    // ********************************************************** //
    
    // *********** CODE DE LA RAGE ************** //
      
        int intensiteSonore = Esplora.readMicrophone();
        
      if(intensiteSonore >= 500) // valeur a preciser: faire des tests
      {
        Serial.println("Je crois que vous êtes entrain de rager, pour votre securité et celle de cette manette, je vous prie de bien vouloir vous calmer"); 
        Esplora.writeRed(200);
      }
      else
      {
        Esplora.writeRGB(0, 0, 0);
      }
    
    // ******************************************* //
    
    }

    Bye

    -
    Edité par Anonyme 6 mars 2017 à 18:18:53

    • Partager sur Facebook
    • Partager sur Twitter
      26 septembre 2016 à 19:11:19

      Hey !

      Ça a l'air vraiment sympas comme projet, c'est une bonne idée :) Le code est chouette, au niveau des composants électroniques ça marche comment ? T'as fait le circuit déjà ?

      -
      Edité par Bibou34 26 septembre 2016 à 19:11:38

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        26 septembre 2016 à 19:13:33

        Non, je n'ai rien ajouté sur la carte de base (les composants sont déjà inclus): la arduino esplora.

        -
        Edité par Anonyme 26 septembre 2016 à 19:13:56

        • Partager sur Facebook
        • Partager sur Twitter
          26 septembre 2016 à 19:51:21

          Ah ok je connaissais pas cette carte :) C'est vraiment chouette alors !
          • Partager sur Facebook
          • Partager sur Twitter
            27 septembre 2016 à 19:58:30

            C'est sympa comme projet mais je crois que le code rage va en rendre fou plus d'un.

            Quand on commence à gueuler, c'est déjà pas bon signe et voila que la manette se met à :

            1/ Écrire un texte de 130 caractères sur un Serial à 9600bauds, ce qui va prendre 130ms environ

            2/ Faire un delay de 50ms

            Donc pendant prêt de 200ms, la manette ne réagit plus du tout, ce qui fait un joli temps de latence qui fera probablement encore plus rager le gamer :)

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              28 septembre 2016 à 12:58:23

              C'est bon problème résolu (du moins, beaucoup moins d'attente quand on gueule sur la manette).


              -
              Edité par Anonyme 1 octobre 2016 à 13:12:14

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                1 novembre 2016 à 12:10:26

                C'est bon, j'ai enfin programmé le mode accéléromètre (la manette est beaucoup plus maniable et pratique).
                • Partager sur Facebook
                • Partager sur Twitter
                  4 novembre 2016 à 22:37:32

                  Très beau projet! Tient nous au courant :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Étudiant ingénieur dans le domaine de l'électronique.
                  Anonyme
                    23 février 2017 à 11:59:38

                    Si jamais quelqu'un aurait une arduino Esplora, ça serait sympa qu'il puisse tester mon programme et me dire ce qu'il en pense sur différents types de jeux, les défauts...

                    Pour moi ce serait intéressant d'avoir un regard neuf.

                    D'ailleurs, si vous avez des idées de boitiers, n'hésitez pas.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [projet] le A.P.C.C (le Arduino PC controller)

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown