Go Down

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

Pac2Kro

Ouaaaaa, un protocole de communication révolutionnaire de chez M. Igloo.

numero_744

C'est une USB de type B (pour avoir un seul câble pour les deux prises), avec les broches qui forment un carré, où couper les pistes ? Côté d+/d- ou 5V/GND ? Lequel aura droit à deux broches ? Lequel ne l'aura pas ? C'est par 3 broches, pas 2 ou 4, 3 ! Grr ! ]:D
Brancher le 5V(USB) sur Vin ou 5V ? Si on peut sur 5V, puis-je couper ces deux pistes et poser la prise à l'endroit où c'est coupé ?
Couper = gratter ?

Un clavier qui écrit en morse, pourquoi pas ?
Ajouter la librairie sMorse depuis ce post, modifier les dot(), les dash() et dans le switch modifier le case ' ' et supprimer le case '.' pour qu'au lieu de faire clignoter une LED, il écrive comme un clavier, mais en morse.
(Plus qu'à trouver un clavier matriciel azerty 37 touches (26 lettres + 10 chiffres + 1 espace)).
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

numero_744

Euh... S'iouplé, j'attends les instructions pour tout souder, là...
Si quelqu'un pourrait me répondre, ça me ferait vachement avancer.
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


Euh... S'iouplé, j'attends les instructions pour tout souder, là...
Si quelqu'un pourrait me répondre, ça me ferait vachement avancer.

Je vois pas pourquoi tu te casse la tête ...
Les prises USB-B ont 4 broches aux pas standard 2.54mm

Au milieu de ta protoshield tu as deux lignes GND / 5V.
Rien ne t'empêche de couper (avec un cutter, proprement) ces deux pistes pour avoir 4 petites pistes indépendantes.
Après tu peut câbler tes 4 broches de l'usb facilement avec les deux petites pistes devant et derrière le connecteur.
(voir mon mini schéma en pièce jointe)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

Merci, je pensais la mettre perpendiculaire (90° dans le sens des aiguilles d'une montre) à ce que tu me propose.
Donc, je pourrais ne pas couper le GND, mais puis-je laisser 5V USB connecté à 5V Arduino ou dois-je impérativement le brancher à Vin (la première solution me ferait une piste recto-verso de moins à couper...).
Merci !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


Merci, je pensais la mettre perpendiculaire (90° dans le sens des aiguilles d'une montre) à ce que tu me propose.

Pourquoi pas ... moi je pensait que tu voulais avoir les deux ports usb dans le même sens mais ça pose pas de problème de le mettre à 90°.


Donc, je pourrais ne pas couper le GND, mais puis-je laisser 5V USB connecté à 5V Arduino ou dois-je impérativement le brancher à Vin (la première solution me ferait une piste recto-verso de moins à couper...).

Vusb -> 5v arduino, surtout pas à VIN !
Vin c'est la tension au niveau de la prise jack, donc avant le régulateur 5v.
Si tu relie Vusb et Vin ça ne marchera pas et le jour ou tu utiliseras une pile 9v ou un adaptateur secteur tout ton montage + ce qui est branché sur l'usb va cramer.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

OK, merci.
Je souderais tout ça c't'aprèm si j'en ai le temps (c'est plutôt mal partit !).
J'essaierai de vous montrer ce que ça donne après.
- 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 commencé : je gratte, je gratte, mais ça coupe pas... Je continue de gratter ou pas ?
As-tu déjà essayé ?
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


J'ai commencé : je gratte, je gratte, mais ça coupe pas... Je continue de gratter ou pas ?

-> Cutter, si tu grattes tu va y passer des heures ;)
Il suffit de faire deux petites coupures espacé d'un mm environ puis de faire sauter le morceau de piste entre avec la lame du cutter.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

Il faut couper toute l'épaisseur du shield ? :smiley-eek:
J'y retourne avec ta méthode, je reviens dans quelques minutes ! 8)
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

skywodd


Il faut couper toute l'épaisseur du shield ? :smiley-eek:
J'y retourne avec ta méthode, je reviens dans quelques minutes ! 8)

Mais non ! Juste l'épaisseur de la piste de cuivre ...
Imagine le bordel si il fallait couper au travers de la shield pour faire le moindre petit montage :smiley-mr-green:
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

numero_744

OK, vu que je n'y arrivais pas avec le cutter, j'ai pris un petit (1mm max.) forêt. En coupant creusant, j'ai vu du bleu, donc je me suis arrêté là.
Mauvaise nouvelle : la piste GND est connectée aux deux bouts => pistes de plus à couper creuser...
Je n'ai pas fini de tout couper creuser et je ne sais pas quand je pourrais souder.

Je posterai ce que ça donne après construction et avant test.
Merci et au plus tôt !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

numero_744

Salut, je suis de retour, c'est tout soudé (photos jointes), étant un débutant dans ce domaine (ça doit être le deuxième fois de ma vie), c'est (très) sale.
(Oui, j'ai cramé le port ICSP avec le côté du fer, mais j'ai refait les trous !)
J'ai vérifié et revérifié au ohmmètre, ça passe quand il faut et ça ne passe pas quand il ne faut pas. Bref, côté hardware, ça devrait marcher.
Mais ça ne marche pas, ça doit être côté software, voici mon code :
Code: [Select]

#include <UsbKeyboard.h>

//D-pad
int H = 16;//Vitesse +
int L = 17;//Vitesse -
int Dl = 18;//Direction gauche
int Dr = 19;//Direction droite
//Potar
int Tour = A1;
//inter simple A/0/B avec ressort
int R = 10;//Tir
int l = 11;//Tourelle (Free/Lock)

//Variables
boolean prH = false;
boolean prL = false;
boolean prG = false;
boolean prD = false;

boolean prW = false;
boolean prX = false;
boolean prC = false;
boolean prV = false;

void setup() {
  pinMode(H, INPUT);
  pinMode(L, INPUT);
  pinMode(Dl, INPUT);
  pinMode(Dr, INPUT);
  pinMode(Tour, INPUT);
  pinMode(R, INPUT);
  pinMode(l, INPUT);
  digitalWrite(H, HIGH);
  digitalWrite(L, HIGH);
  digitalWrite(Dl, HIGH);
  digitalWrite(Dr, HIGH);
  digitalWrite(Tour, HIGH);
  digitalWrite(R, HIGH);
  digitalWrite(l, HIGH);
}

void loop() {
  UsbKeyboard.update();
  if(digitalRead(H) == LOW) {
    if(prH != true) {
      UsbKeyboard.press(ARROW_UP);
      prH = true;
    }
  } else {
    if(prH != false) {
      UsbKeyboard.release(ARROW_UP);
      prH = false;
    }
  }
  if(digitalRead(L) == LOW) {
    if(prL != true) {
      UsbKeyboard.press(ARROW_DOWN);
      prL = true;
    }
  } else {
    if(prL != false) {
      UsbKeyboard.release(ARROW_DOWN);
      prL = false;
    }
  }
  if(digitalRead(Dl) == LOW) {
    if(prG != true) {
      UsbKeyboard.press(ARROW_LEFT);
      prG = true;
    }
  } else {
    if(prG != false) {
      UsbKeyboard.release(ARROW_LEFT);
      prG = false;
    }
  }
  if(digitalRead(Dr) == LOW) {
    if(prD != true) {
      UsbKeyboard.press(ARROW_RIGHT);
      prD = true;
    }
  } else {
    if(prD != false) {
      UsbKeyboard.release(ARROW_RIGHT);
      prD = false;
    }
  }
  if(analogRead(Tour) >= 800) {
    if(prW != true) {
      UsbKeyboard.press(KEY_W);
      prW = true;
    }
  } else {
    if(prW != false) {
      UsbKeyboard.release(KEY_W);
      prW = false;
    }
  }
  if(analogRead(Tour) < 800 && analogRead(Tour) >= 600) {
    if(prX != true) {
      UsbKeyboard.press(KEY_X);
      prX = true;
    }
  } else {
    if(prX != false) {
      UsbKeyboard.release(KEY_X);
      prX = false;
    }
  }
  //rien de 400 à 600
  if(analogRead(Tour) < 400 && analogRead(Tour) >= 200) {
    if(prC != true) {
      UsbKeyboard.press(KEY_C);
      prC = true;
    }
  } else {
    if(prC != false) {
      UsbKeyboard.release(KEY_C);
      prC = false;
    }
  }
  if(analogRead(Tour) < 200) {
    if(prV != true) {
      UsbKeyboard.press(KEY_V);
      prV = true;
    }
  } else {
    if(prV != false) {
      UsbKeyboard.release(KEY_V);
      prV = false;
    }
  }
  if(digitalRead(R) == LOW) {
    UsbKeyboard.send(KEY_SPACE);
  }
  if(digitalRead(l) == LOW) {
    UsbKeyboard.send(KEY_L);
    while(digitalRead(l) == LOW) {
      ;
    }
  }
}

Ça compile mais l'Arduino (ou l'ordinateur) ne réagit pas...
Je met la librairie complète UsbKeyboard qui est dans mon dossier "librairies" en pièce jointe.

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

skywodd

Test avec le code d'origine qui marche.
Si ça ne marche pas c'est que ton montage est foireux, si ça marche c'est que ton code est foireux ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up