🛠 Clavier USB : taper du texte avec la bibliothèque Keyboard
Objectifs
Exploiter la fonctionnalité qui définit la Leonardo : l'ATmega32u4 intègre le transceiver USB, la carte peut donc se faire passer pour un clavier HID auprès de l'ordinateur hôte, sans aucun processeur USB auxiliaire. Vous enverrez une phrase quand un bouton est pressé, avec les deux précautions officielles : une fenêtre de garde au démarrage et un appel uniquement sur front montant.
Matériel
- 1 Arduino Leonardo + câble micro-USB
- 1 bouton poussoir entre la broche 2 et GND (pull-up interne)
- Un focus clavier volontaire dans un éditeur de texte pour le test
Code complet
#include <Keyboard.h>
const uint8_t BUTTON_PIN = 2;
bool wasPressed = false;
void setup {
pinMode(BUTTON_PIN, INPUT_PULLUP);
Keyboard.begin; // énumère la carte en clavier HID standard
delay(3000); // fenêtre de garde : le temps de placer le focus
}
void loop {
bool pressed = (digitalRead(BUTTON_PIN) == LOW);
if (pressed && !wasPressed) { // front montant uniquement
Keyboard.print("Hello, Leonardo!"); // les frappes partent vers l'OS hôte
Keyboard.releaseAll; // aucun key remain held
}
wasPressed = pressed;
}
Vérification attendue
Placez le curseur dans un éditeur de texte pendant les 3 premières secondes, puis appuyez sur le bouton : la phrase « Hello, Leonardo ! » est tapée une seule fois dans l'application focalisée. Dans l'IDE, le moniteur série ne montrera rien ici : Serial n'est pas utilisé, et le périphérique USB courant est un clavier.
Erreurs fréquentes
- HID déchaîné (runaway) : appeler
Keyboard.printdans une boucle serrée inonde l'ordinateur de frappes et peut rendre la carte très difficile à reprogrammer. Arduino avertit explicitement : testez d'abord avecSerial.printet ne déclenchez les appels HID que derrière un bouton ou une condition. - Oublier
Keyboard.releaseAll: une touche laissée enfoncée fait répéter un caractère indéfiniment. - Pas de fenêtre de garde : la carte tape immédiatement dans la fenêtre focalisée à l'énumération, parfois l'IDE lui-même.
- Mauvais composant sélectionné : les clones « Pro Micro » partagent la puce mais demandent leur propre entrée de carte dans l'IDE.
- Attendre le moniteur série : une fois énumérée en HID, la carte peut ne plus exposer de port CDC si le sketch ne déclare que le clavier.
Autres tutoriels pour cette carte
- Faire clignoter la LED intégrée (broche 13)
- Bouton et console série : Serial (USB) vs Serial1 (broches 0/1)
- Lire un capteur analogique : potentiomètre et ADC 10 bits
- Souris USB : déplacer le curseur avec la bibliothèque Mouse
- Asservir un servo moteur avec un potentiomètre (PWM)
- Programmer aux registres : interruption Timer/Counter1
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino