Projet de gamepad avec Keyboard.h

Portrait de Halzote

Bonjours tout le monde.

Je suis désoler de venir embêter avec mes questions mais je ne connais pas grand chose au codage et en temps normal je parviens à m'en sortir avec des exemples mais là je bloque.

Bon, pour commencer je vais juste expliquer mes intentions.

Je voudrais faire un petit boîtier avec 4 interrupteurs à bascule et 4 boutons poussoir.

Ce boîtier est pour le jeu de simulation spatial Elite Dangerous. 

Les 4 boutons poussoir me serviront simplement de simulation de simple pression de clavier tendis que les 4 interrupteur à bascule devront simuler une touche qui reste enfoncée. Je dis ça par peur de conflit entre les touche ou que l'ordinateur l'interprète comme un "j'appuis, je lâche, j'appuis, ect".

Mon problème c'est que quand j'appuie sur le bouton d'une lettre il va non seulement me prendre une lettre "au hasard" mais si je maintiens il fera sur le bloc note par exemple "fghabcdefghabcdefghabcdefgh" voilà en gros il fait une boucle et je ne sais pas comment la cassée à chaque lettre et surtout est-ce possible que je me serve de plusieurs lettre en même temps ? 


Voici mon code :

#include <Keyboard.h>

//Projet de PAD 8boutons pour Elite Dangerous

const int A = 3;
const int B = 4;
const int C = 5;
const int D = 6;
const int E = 7;
const int F = 8;
const int G = 9;
const int H = 10;
const int PWR = 2; //Allumer et enteindre le PAD
const int led = 12; //Sers de témoin ON/OFF
boolean flag = true;

void setup()

{
  pinMode (A, INPUT);
  pinMode (B, INPUT);
  pinMode (C, INPUT);
  pinMode (D, INPUT);
  pinMode (E, INPUT);
  pinMode (F, INPUT);
  pinMode (G, INPUT);
  pinMode (H, INPUT);
  pinMode (PWR, INPUT);
  pinMode (led, OUTPUT);

  Serial.begin(9600);
}

void loop()

{
  if (digitalRead(PWR))
  {
    Keyboard.begin();
    digitalWrite(PWR,HIGH);
    flag = false;
  }

      if (digitalRead(A))
    {
      Keyboard.press('a');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    }
  
      if (digitalRead(B))
    {
      Keyboard.press('b');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    }
  
      if (digitalRead(C))
    {
      Keyboard.press('c');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    }
  
      if (digitalRead(D))
    {
      Keyboard.press('d');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    } 
  
      if (digitalRead(E))
    {
      Keyboard.press('e');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    } 
  
      if (digitalRead(F))
    {
      Keyboard.press('f');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    } 
  
      if (digitalRead(G))
    {
      Keyboard.press('g');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    } 
  
      if (digitalRead(H))
    {
      Keyboard.press('h');
      delay(100);
      Keyboard.releaseAll();
      delay(100);
    }

  else
  {
    if(!flag)
    {
      Keyboard.end();
      digitalWrite(led, LOW);
      flag = true;
    }
  }
}

J'éspère que quelqu'un saura m'aider mais dans le pire des cas merci quand même ^^'

Bonne journée à tous.

Portrait de Halzote

Salutation, non pas du tout résolut j'ai vu la réponse dans mon lit juste avant de dormir et je me suis à peine levé ^^'.

Oui j'ai suivi l'exemple qui mettait le Keyboard.begin(); dans le "void loop()" pour que ce soit possible de d'éteindre avec un interrupteur c'est donc une erreur ? 

Pour la carte j'utilise une arduino micro pour sa petite taille mais aussi pour sa 32u4. 

sizzling_turing.png

Pour la voir en grande : http://www.hostpic.org/images/1807102331370114.png

Voici le schéma j'espère qu'il est bien visible et compréhensible je n'ai pas bien l'habitude =3  

Merci de ta réponse c'est vraiment agréable d'être aussi bien reçu :)

Portrait de Halzote

Pas de soucis c'est déjà très gentil de ta pare merci beaucoup :)

Portrait de Halzote

Merci Brossden, je n'y arrive pas mais je vais essayer quand même, ce projet est assez important pour moi et puis j'ai déjà commandé tout ce qu'il me fallait ahah :p 

Portrait de Halzote

Ahah excuses-moi c'est vrai que mon message prête à confusion.

Pour commencé j'ai juste commandé les composant que je souhaite pour le projet une fois que j'aurais réussi. Comme un boîtier pour l'installer et des interrupteurs à LED ect donc ne t'en fais pas ^^.

Et bien je pense que j'ai mal saisi tes explications parce que que je retombe dans la même boucle en fait et ça refait ABCDEFG ect.

Et je ne sais décidément pas pourquoi je n'arrive pas à se faire allumer la LED témoins. 

Enfin bref j'avoue que je me sens un peu stupide :')

 

Portrait de Halzote

Mdr t'es un chef alors c'est exactement ça sauf que le on off du boîtier j'aurais plutôt préféré le mettre avec un bouton  à état mais sinon ouais c'est exactement ça c'est vraiment gentil de ta pare d'avoir pris du temps pour m'aider tu ne te rend pas compte de ce que ça représente pour moi de pouvoir concrétiser mon idée et en plus je vais pouvoir en faire profiter tout les autre pilotes du jeu qui sont comme moi et qui n'y connaissent pas grand chose :D 

(Oui mon but c'est aussi de partager mes idées ^^ ) 
 

Portrait de Halzote

Merci beaucoup ^^ 

Ne t'en fait pas je suis sur un clavier QWERTZ ;)

Quand j'aurais tout réglé je reviendrais pour poster le projet au complet comme ça si d'autres en auront besoin ils pourront en profiter ^^.

Encore merci Brossden <3

Portrait de Halzote

Encore merci Brossden :D

Portrait de Halzote

Mdr moi ça m'a évité la folie :')

Portrait de Halzote

Simplement qu'à force de buter sur le même problème ca peut rendre fou ^^

Portrait de Halzote

Et pour conclure voici le résultat :3

39891253_10217094815313610_5201684834065317888_n.jpg