Voici un tuto trouvais sur le net fore intéressent.
Réalisateur de se tuto se nomme TWal.
Voici à quoi ressemble la carte Arduino leonardo.
Récemment, je me suis intéressé au contrôle du clavier avec l'arduino, et je suis tombé sur l'arduino leonardo.
- Pourquoi l'arduino leonardo ?
Les arduinos possèdent deux puces électroniques : une permettant de faire la conversion USB -> série, et l'autre que l'on programme. L'arduino leonardo diffère de ses confrères sur ce point : sa puce qu'on programme gère nativement l'usb ! On peut donc l'utiliser comme clavier, souris, clé usb, etc.
- Avant de commencer...
Si vous possédez une version récente de l'IDE arduino, il devrait y avoir une librairie pour contrôler très facilement la souris et le clavier.
Avant de commencer, je vous met en garde : l'arduino leonardo tapant sur votre clavier et utilise votre souris à votre place, il peut être rapidement gênant. C'est pourquoi on utilise un bouton pour le contrôler.
Le clavier se pilote avec l'objet Keyboard, et la souris avec l'objet Mouse. C'est compliqué, hein ? :D
Dans mes exemples, j'utilise un bouton cablé sur le pin 7 .ici
- Contrôler le clavier
L'objet Keyboard possède les méthodes suivantes :
void Keyboard.begin() : démarre la communication avec l'ordinateur
void Keyboard.end() : termine la communication avec l'ordinateur
void Keyboard.press(char key) : appuie sur la touche key. Faites attention si vous n'utilisez pas un clavier qwerty (voir ci-dessous)
int Keyboard.print(char* keys) ou (char key) : appuie sur la ou les touches key ou keys, et retourne le nombre d'octets envoyés (même avertissement)
int Keyboard.println(char* keys) ou (char key) : comme print, mais retourne à la ligne après. (encore le même avertissement)
int Keyboard.release(char key) : relache la touche key. Retourne le nombre de touches relachées (toujours le même avertissement)
int Keyboard.write(char key) : appuie puis relache la touche key, et retourne le nombre d'octets envoyés (je suppose que vous savez ce qui va entre ces parenthèses, à présent)
int Keyboard.releaseAll() : relache toutes les touches. Retourne le nombre de touches relachées
L'avertissement si vous n'utilisez pas de clavier qwerty : si vous dites à l'arduino d'écrire un "a", il va vous écrire un "q". En fait, l'arduino va envoyer la position de la touche "a", mais sur clavier qwerty, ça sera la position de la touche "q". Quand l'ordinateur inteprétera cet appui, il transformera ça en fonction de la disposition de clavier que vous utilisez. Ce sera sûrement azerty, chez vous.
Il faudra donc donner la position de la touche à appuyer en qwerty pour que ça marche.
Voici quelques exemples (qui supposera que vous êtes en qwerty, pour simplifier) :
Votre touche "A" ne marche plus ? Pas de problème ! Vous avez votre arduino leonardo.
Vous voulez vous distinguer de vos compagnons sur IRC pendant votre salut ? Facile ! L'arduino leonardo est là.
Cela affichera le message suivant :
- Contrôler la souris
L'objet Mouse possède les méthodes suivantes :
void Mouse.begin() : démarre la communication avec l'ordinateur
void Mouse.end() : termine la communication avec l'ordinateur
void Mouse.move(int x, int y, int wheel) : bouge la souris de x pixels sur l'axe horizontal, et de y pixels sur l'axe vertical, et bouge la roulette de wheel crans
void Mouse.press(char button) : appuie sur le bouton button. Button est une de ces trois constantes : MOUSE_LEFT, MOUSE_MIDDLE, MOUSE_RIGHT
void Mouse.release(char button) : relache le bouton button.
bool Mouse.isPressed(char button) : retourne si le bouton button est enfoncé
void Mouse.click(char button) : appuie puis relache le bouton button
Voici un exemple (presque utile !) :
Votre bureau est trop bien rangé ? Les icônes sont trop bien organisées ? Votre arduino leonardo peut vous les mélanger.
Voilà tout, j'espère vous avoir donné des idées de hack avec le leonardo. Pour plus d'informations, je vous recommande de consulter la documentation .ici
Amateurs de VIM, vous n'avez plus qu'à vous fabriquer une pédale !ici
Réalisateur de se tuto se nomme TWal.
Voici à quoi ressemble la carte Arduino leonardo.
Récemment, je me suis intéressé au contrôle du clavier avec l'arduino, et je suis tombé sur l'arduino leonardo.
- Pourquoi l'arduino leonardo ?
Les arduinos possèdent deux puces électroniques : une permettant de faire la conversion USB -> série, et l'autre que l'on programme. L'arduino leonardo diffère de ses confrères sur ce point : sa puce qu'on programme gère nativement l'usb ! On peut donc l'utiliser comme clavier, souris, clé usb, etc.
- Avant de commencer...
Si vous possédez une version récente de l'IDE arduino, il devrait y avoir une librairie pour contrôler très facilement la souris et le clavier.
Avant de commencer, je vous met en garde : l'arduino leonardo tapant sur votre clavier et utilise votre souris à votre place, il peut être rapidement gênant. C'est pourquoi on utilise un bouton pour le contrôler.
Le clavier se pilote avec l'objet Keyboard, et la souris avec l'objet Mouse. C'est compliqué, hein ? :D
Dans mes exemples, j'utilise un bouton cablé sur le pin 7 .ici
- Contrôler le clavier
L'objet Keyboard possède les méthodes suivantes :
void Keyboard.begin() : démarre la communication avec l'ordinateur
void Keyboard.end() : termine la communication avec l'ordinateur
void Keyboard.press(char key) : appuie sur la touche key. Faites attention si vous n'utilisez pas un clavier qwerty (voir ci-dessous)
int Keyboard.print(char* keys) ou (char key) : appuie sur la ou les touches key ou keys, et retourne le nombre d'octets envoyés (même avertissement)
int Keyboard.println(char* keys) ou (char key) : comme print, mais retourne à la ligne après. (encore le même avertissement)
int Keyboard.release(char key) : relache la touche key. Retourne le nombre de touches relachées (toujours le même avertissement)
int Keyboard.write(char key) : appuie puis relache la touche key, et retourne le nombre d'octets envoyés (je suppose que vous savez ce qui va entre ces parenthèses, à présent)
int Keyboard.releaseAll() : relache toutes les touches. Retourne le nombre de touches relachées
L'avertissement si vous n'utilisez pas de clavier qwerty : si vous dites à l'arduino d'écrire un "a", il va vous écrire un "q". En fait, l'arduino va envoyer la position de la touche "a", mais sur clavier qwerty, ça sera la position de la touche "q". Quand l'ordinateur inteprétera cet appui, il transformera ça en fonction de la disposition de clavier que vous utilisez. Ce sera sûrement azerty, chez vous.
Il faudra donc donner la position de la touche à appuyer en qwerty pour que ça marche.
Voici quelques exemples (qui supposera que vous êtes en qwerty, pour simplifier) :
Votre touche "A" ne marche plus ? Pas de problème ! Vous avez votre arduino leonardo.
- Code:
const int buttonPin = 7;
void setup() {
Keyboard.begin();
pinMode(buttonPin, INPUT);
}
void loop() {
if(digitalRead(buttonPin)) {
Keyboard.press('a'); //Quand on appuie sur le bouton, on appuie sur "A"
} else {
Keyboard.release('a'); //Quand on relache le bouton, on relache "A"
}
}
Vous voulez vous distinguer de vos compagnons sur IRC pendant votre salut ? Facile ! L'arduino leonardo est là.
- Code:
const int buttonPin = 7;
void setup() {
Keyboard.begin();
pinMode(buttonPin, INPUT);
}
void loop() {
while(!digitalRead(buttonPin)); //Tant qu'on appuie pas sur le bouton on fait rien
//Un fois qu'on a appuyé sur le bouton, on affiche notre message trop classe
Keyboard.println(" _________________________________");
Keyboard.println("< Bien le bonsoir tout le monde ! >");
Keyboard.println(" --------------------------------- ");
Keyboard.println(" \\ ^__^");
Keyboard.println(" \\ (oo)\\_______");
Keyboard.println(" (__)\\ )\\/\\");
Keyboard.println(" ||----w |");
Keyboard.println(" || ||");
//Puis on ne fait plus rien, (a ce moment, vous êtes sensés débrancher l'arduino leonardo)
while(true);
}
Cela affichera le message suivant :
- Code:
_________________________________
< Bien le bonsoir tout le monde ! >
---------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
- Contrôler la souris
L'objet Mouse possède les méthodes suivantes :
void Mouse.begin() : démarre la communication avec l'ordinateur
void Mouse.end() : termine la communication avec l'ordinateur
void Mouse.move(int x, int y, int wheel) : bouge la souris de x pixels sur l'axe horizontal, et de y pixels sur l'axe vertical, et bouge la roulette de wheel crans
void Mouse.press(char button) : appuie sur le bouton button. Button est une de ces trois constantes : MOUSE_LEFT, MOUSE_MIDDLE, MOUSE_RIGHT
void Mouse.release(char button) : relache le bouton button.
bool Mouse.isPressed(char button) : retourne si le bouton button est enfoncé
void Mouse.click(char button) : appuie puis relache le bouton button
Voici un exemple (presque utile !) :
Votre bureau est trop bien rangé ? Les icônes sont trop bien organisées ? Votre arduino leonardo peut vous les mélanger.
- Code:
const int buttonPin = 7;
void setup() {
Mouse.begin();
pinMode(buttonPin, INPUT);
randomSeed(analogRead(0));
}
void loop() {
if(digitalRead(buttonPin)) {
//Si on appuie sur la souris, on relache, sinon on appuie
if(Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
} else {
Mouse.press(MOUSE_LEFT);
}
//On écarte le pointeur de 50 a 100 pixels de la position actuelle
int x = random(50, 100) * (random(0,2) * 2 - 1);
int y = random(50, 100) * (random(0,2) * 2 - 1);
Mouse.move(x, y);
} else {
if(Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
}
Voilà tout, j'espère vous avoir donné des idées de hack avec le leonardo. Pour plus d'informations, je vous recommande de consulter la documentation .ici
Amateurs de VIM, vous n'avez plus qu'à vous fabriquer une pédale !ici