Go Down

Topic: [RESOLU]Ajouter un port USB pour clavier (Read 5168 times) previous topic - next topic

numero_744

#15
Dec 31, 2012, 02:14 pm Last Edit: Dec 31, 2012, 02:17 pm by numero_744 Reason: 1
Merci. Ça compile, maintenant.

Quand j'appuie sur la touche 'a', comment l'ordinateur sait si j'envoie
Code: [Select]
a a a a a a a a a a a a a a a
très rapidement ou si j'envoie
Code: [Select]
a______________________
(une pression continue) ?

Mon but est de faire une manette de jeux vidéos qui envoie à l'ordinateur des commandes clavier, et j'aimerais éviter les saccades qui peuvent êtres dérangeantes...
Je peux même en faire une manette multi-jeux : je connecte à l'ordi en USB série, j'envoie un caractère à la carte selon le jeux auquel je vais jouer, je coupe, je débranche (alim. jack) et je rebranche à la prise v-usb.

Mon shield proto arrive, avant d'acheter les composants, merci de me confirmer que c'est bien ce circuit :


Le *.pdf est téléchargé depuis usb.org, je pense que les références sont bonnes.
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


Quand j'appuie sur la touche 'a', comment l'ordinateur sait si j'envoie
Code: [Select]
a a a a a a a a a a a a a a a
très rapidement ou si j'envoie
Code: [Select]
a______________________
(une pression continue) ?

Plusieurs appuis = plusieurs événements USB appui / relâche.
Un appui continu = un événements USB appui seul.


Mon but est de faire une manette de jeux vidéos qui envoie à l'ordinateur des commandes clavier, et j'aimerais éviter les saccades qui peuvent êtres dérangeantes...
Je peux même en faire une manette multi-jeux : je connecte à l'ordi en USB série, j'envoie un caractère à la carte selon le jeux auquel je vais jouer, je coupe, je débranche (alim. jack) et je rebranche à la prise v-usb.

Tu devras faire ta propre version de la librairie usbKeyboard en enlevant la partie relâchement "auto" de la touche.


Mon shield proto arrive, avant d'acheter les composants, merci de me confirmer que c'est bien ce circuit :

C'est bon.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

Mille mercis Skywodd !
Je vais sauter sur le code source de usbKeyboard et modifier la fonction sendKeyStroke façon leonardo et changer les #define des touches pour avoir un clavier plus complet.
Je suis vraiment soulagé !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

numero_744

J'ai fait les modifications de "UsbKeyboard.h" (document ci-joint)
Est-ce bien ?
Je sais que l'exemple ne fonctionnera plus avec.
Je crains plutôt que mes if dans le sendKeyStroke soient mal placés ou que mes #define dysfonctionnent.
Encore merci !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

numero_744

S'cusez-moi, y'a erreur, je remets la bonne version. Enfin, je ne sais pas si elle marche. Mais elle devrait. Elle compile (aussi avec l'exemple) mais je ne peux pas l'essayer. Donc celle qui devrait marcher, quoi !
Pouvez vous me dire si elle fonctionne correctement s'il vous plaît ?
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd

C'est pas trés clair le code ...
Moi je garderai juste le nécessaire pas plus (voir pièce jointe).

(Attention: j'ai pas testé le code !)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

#21
Jan 02, 2013, 12:08 pm Last Edit: Jan 02, 2013, 12:10 pm by numero_744 Reason: 1
Merci pour ta réponse, mais ton code ne peut pas marcher : il faut garder sendKeyStroke() (sinon ça ne compile pas ]:))
J'aimerais juste savoir si
Code: [Select]

  void press(byte keyStroke) {
    while (!usbInterruptIsReady()) {
      // Note: We wait until we can send keystroke
      //       so we know the previous keystroke was
      //       sent.
    }
     
    memset(reportBuffer, 0, sizeof(reportBuffer));

    reportBuffer[0] = 0;
    reportBuffer[1] = keyStroke;
       
    usbSetInterrupt(reportBuffer, sizeof(reportBuffer));
  }

et
Code: [Select]

  void release(byte keyStroke) {
    while (!usbInterruptIsReady()) {
      // Note: We wait until we can send keystroke
      //       so we know the previous keystroke was
      //       sent.
    }
     
    // This stops endlessly repeating keystrokes:
    memset(reportBuffer, 0, sizeof(reportBuffer));     
    usbSetInterrupt(reportBuffer, sizeof(reportBuffer));
  }

marcheront (en tout cas, ça compile).

Sinon,
Code: [Select]

  void send(byte keyStroke) {
    sendKeyStroke(keyStroke);
  }

est juste un raccourcis. (Quel flemmard je suis ! :smiley-yell:)

Merci encore, mon proto shield devrait arriver aujourd'hui, j'irai acheter les composants demain !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


Merci pour ta réponse, mais ton code ne peut pas marcher : il faut garder sendKeyStroke() (sinon ça ne compile pas ]:))

Moi je part du principe que je suit l'API leonardo et que par conséquent j'oublie l'ancienne api de usbKeyboard ;)


J'aimerais juste voir si
Code: [Select]

  void press(byte keyStroke) {
    while (!usbInterruptIsReady()) {
      // Note: We wait until we can send keystroke
      //       so we know the previous keystroke was
      //       sent.
    }
     
    memset(reportBuffer, 0, sizeof(reportBuffer));

    reportBuffer[0] = 0;
    reportBuffer[1] = keyStroke;
       
    usbSetInterrupt(reportBuffer, sizeof(reportBuffer));
  }

et
Code: [Select]

  void release(byte keyStroke) {
    while (!usbInterruptIsReady()) {
      // Note: We wait until we can send keystroke
      //       so we know the previous keystroke was
      //       sent.
    }
     
    // This stops endlessly repeating keystrokes:
    memset(reportBuffer, 0, sizeof(reportBuffer));     
    usbSetInterrupt(reportBuffer, sizeof(reportBuffer));
  }

marcheront (en tout cas, ça compile).

Ça marchera mais autant faire une seule fonction qui prend une touche + modificateur en argument et qui est appelé par les autres fonctions.
Copier coller du code n'est jamais une bonne solution.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

Salut, j'ai reçu mon proto shield et je ne sais pas comment souder ma prise USB, manque de trous...
Merci !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


Salut, j'ai reçu mon proto shield et je ne sais pas comment souder ma prise USB, manque de trous...

Comment ça ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

Y'a pas de trous ! J'les mets où le broches de la prise ?
Cf image jointe à ce post.
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


Y'a pas de trous ! J'les mets où le broches de la prise ?
Cf image jointe à ce post.

C'est l'emplacement pour un composant CMS !
Si tu veut souder ton port usb c'est de l'autre côté dans la zone avec des pastilles qu'il faut travailler ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

Oups ! :smiley-eek: :smiley-eek-blue:
:smiley-sweat: Cette partie (pièce jointe) ?
Comment placer la prise pour que d+ et d-; 5V et GND ne soient pas reliés ?
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

numero_744

. . ./_ _ _/. . ./
. ./_ . _ ./. .//_ ./. . _/_ _/./. _ ./_ _ _//_ _ . . ./. . . . _/. . . . _/
. . ./_ _ _/. . ./
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

al1fch

#29
Jan 07, 2013, 10:00 pm Last Edit: Jan 07, 2013, 10:02 pm by al1fch Reason: 1
C'est ton clavier USB maison qui fait du morse ?  :smiley-mr-green:

De quel type est l'embase USB à souder ? A ou B ? http://www.gotronic.fr/cat-connecteurs-usb-929.htm
Si c'est une embase B il faut couper deux pistes de la carte proto pour obtenir 4 pastilles 'en carré' , sans liaison entre elles.
Si c'est une embase A il ne doit pas y avoir de problème (4 broches en ligne au pas de 2,54 mm)

Go Up