hote-clavier-usb.ino
Un vrai clavier USB branché sur le port USB-A : la classe HID boot est décodée par la bibliothèque, et chaque touche apparaît sur le moniteur série. La Mega ADK devient un routeur d'entrées USB vers du matériel ancien.
Matériel requis
Une Arduino Mega ADK Rev3 (ATmega2560 + puce hôte USB MAX3421E avec port USB-A, broche D7 réservée au reset du MAX3421E). 1 clavier USB (filaires simples, sans hub).
Branchement
Clavier directement sur le port USB-A ; D7 non utilisée.
Fonctionnement
Usb.Task fait tourner l'énumération ; le parseur HID boot appelle OnKeyDown à chaque trame de touche reçue en low-speed. Carte « Arduino Mega ADK » dans l'IDE. Pour l'hôte USB/ADK, installez la bibliothèque USB Host Shield 2.0 ; ne pas utiliser D7. Le port USB-A alimente l'accessoire en 5 V.
Pour aller plus loin
Rejetez les touches vers un second Arduino (UART) pour logger un poste de saisie, ou déclenchez des macros.
hote-clavier-usb.ino
// La Mega ADK lit un clavier USB (HID boot) via USB Host Shield 2.0.
#include <Max3421e.h>
#include <Usb.h>
#include <hidboot.h>
#include <usbhub.h>
USB Usb;
HIDBoot<USB_HID_PROTOCOL_KEYBOARD> HidKeyboard(&Usb);
class MonClavier : public KeyboardReportParser {
void OnKeyDown(uint8_t mod, uint8_t key) override {
Serial.print(F("Touche 0x")); Serial.println(key, HEX);
}
};
MonClavier klavier;
void setup() {
Serial.begin(115200);
if (Usb.Init() == -1) { Serial.println(F("MAX3421E KO")); while (1); }
klavier.SetReportParser(0, &klavier);
HidKeyboard.SetReportParser(0, &klavier);
Serial.println(F("Branchez un clavier sur le port USB-A"));
}
void loop() { Usb.Task(); }