Salut, j'essaye et réessaye de faire fonctionner différentes versions de la librairie v-usb mais ça ne compile pas !
Une infinité d'erreurs sont renvoyées, mais là, c'est pas ma faute : les exemples fournis ne fonctionnent pas non-plus.
numero_744:
Salut, j'essaye et réessaye de faire fonctionner différentes versions de la librairie v-usb mais ça ne compile pas !
Une infinité d'erreurs sont renvoyées, mais là, c'est pas ma faute : les exemples fournis ne fonctionnent pas non-plus.
numero_744:
La leonardo est incompatible avec tous les shields ou quelques-uns seulement ?
L'Ethernet, par exemple ?
L'ethernet shield officielle devrait marcher car elle utilise le port ICSP pour communiquer avec l'arduino.
Mais toutes les autres shields qui utilisent le spi, i2c, ... ne fonctionnerons pas avec la leonardo.
Merci skywodd,
Bon, on est d'accord :
Je clique sur le lien affiché et j'atterris sur cette page.
Ensuite, je clique sur "arduinousb_release_004.tar.gz", j'ouvre le *.zip et je met le dossier dans "librairies".
J'ouvre l'IDE Arduino.
Fichier
->Exemples
-->arduinousb_release_004
--->UsbKeyboardDemo1
Je clique sur "Vérifier"... Il me renvoie son infinité d'erreurs :
UsbKeyboardDemo1.cpp:1:25: error: UsbKeyboard.h: No such file or directory
UsbKeyboardDemo1.cpp: In function 'void loop()':
UsbKeyboardDemo1.pde:-1: error: 'UsbKeyboard' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_H' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_E' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_L' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_O' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_SPACE' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_W' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_R' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_D' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_ENTER' was not declared in this scope
Je remplace les "" de #include par des <>, je re-clique sur "Vérifier" et... Il continue à me renvoyer des erreurs, sauf la première :
UsbKeyboardDemo1.cpp: In function 'void loop()':
UsbKeyboardDemo1.pde:-1: error: 'UsbKeyboard' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_H' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_E' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_L' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_O' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_SPACE' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_W' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_R' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_D' was not declared in this scope
UsbKeyboardDemo1.pde:-1: error: 'KEY_ENTER' was not declared in this scope
Il faut copier les 3 sous dossiers du dossier "libraries" de l'archive dans le dossier "libraries" de ton installation arduino.
Tu as du copier le dossier "libraries" entier, du coup l'ide ne cherchant pas dans les sous dossier il ne trouve pas la librairie.
UsbKeyboardDemo1.cpp.o: In function `UsbKeyboardDevice':
/Applications/Arduino.app/Contents/Resources/Java/libraries/UsbKeyboard/UsbKeyboard.h:139: undefined reference to `usbInit()'
UsbKeyboardDemo1.cpp.o: In function `UsbKeyboardDevice::update()':
/Applications/Arduino.app/Contents/Resources/Java/libraries/UsbKeyboard/UsbKeyboard.h:150: undefined reference to `usbPoll()'
Au fait, sendKeyStroke() va juste envoyer des signaux comme quoi des touches ont été pressées, comme Keyboard.print() pour une leonardo. Quels sont les équivalents de Keyboard.press() et de Keyboard.release() ?
Au fait2, à quoi sert UsbKeyboard.update() ?
Au fait3, à partir du document ci-joint, p.53 à début 59, puis-je modifier les #define KEY_TOUCHE NUMERO et en rajouter ?
UsbKeyboardDemo1.cpp.o: In function `UsbKeyboardDevice':
/Applications/Arduino.app/Contents/Resources/Java/libraries/UsbKeyboard/UsbKeyboard.h:139: undefined reference to usbInit()' UsbKeyboardDemo1.cpp.o: In function UsbKeyboardDevice::update()':
/Applications/Arduino.app/Contents/Resources/Java/libraries/UsbKeyboard/UsbKeyboard.h:150: undefined reference to `usbPoll()'
La version de vusb utilisait par la lib. étant assez vieille j'ai fait un zip avec la dernière version de vusb et de usbKeyboard.h (voir pièce jointe).
numero_744:
Au fait, sendKeyStroke() va juste envoyer des signaux comme quoi des touches ont été pressées, comme Keyboard.print()pour une leonardo.
Oui mais une touche à la fois (avec la possibilité d'ajout un modificateur (ALT, CTRL, ...)), alors que la version leonardo envoi toute une série de touches d'un seul coup.
numero_744:
Quels sont les équivalents de Keyboard.press() et de Keyboard.release() ?
Ils n'y en a pas.
La librairie envoi un appui puis un relâchement de touche à chaque sendKeyStroke().
Si tu veut faire un clavier usb virtuel "à la sauce leonardo" ouvre usbKeyboard.h (garde de côté usbconfig.h) et fait ton propre code en partant de vusb directement
La fonction de setup de l'usb fait une dizaine de lignes et la partie envoi d'une touche ce résume en deux lignes.
numero_744:
Au fait2, à quoi sert UsbKeyboard.update() ?
A lancer un "pool" du bus usb, c'est ce qui fait que l'usb marche.
numero_744:
Au fait3, à partir du document ci-joint, p.53 à début 59, puis-je modifier les #define KEY_TOUCHE NUMERO et en rajouter ?
Tu peut en rajouter mais les valeurs que tu ajoutes doivent être dans la norme HID sinon l'ordinateur ne verra pas la bonne touche.
Quand j'appuie sur la touche 'a', comment l'ordinateur sait si j'envoie
a a a a a a a a a a a a a a a
très rapidement ou si j'envoie
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.
numero_744:
Quand j'appuie sur la touche 'a', comment l'ordinateur sait si j'envoie
a a a a a a a a a a a a a a a
très rapidement ou si j'envoie
a______________________
(une pression continue) ?
Plusieurs appuis = plusieurs événements USB appui / relâche.
Un appui continu = un événements USB appui seul.
numero_744:
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.
numero_744:
Mon shield proto arrive, avant d'acheter les composants, merci de me confirmer que c'est bien ce circuit :
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é !
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 !
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 ?
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
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
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));
}
void release(byte keyStroke) {
while (!usbInterruptIsReady()) {
// Note: We wait until we can send keystroke
// so we know the previous keystroke was
// sent.
}
Ç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.