🛠 Périphérique composite CDC + HID et bootloader Caterina

Arduino Leonardo — Ficha de placa · avance · Schéma : IMG-leonardo-avance-8-leonardo-cdc-hid-simultanes.svg — Câble USB de la Leonardo se dédoublant en deux flux étiquetés « Clavier HID » et « Port série CDC » entrant dans un ordinateur, avec la timeline du bootloader Caterina (fenêtre 8 s)

Objetivos

Construir un dispositivo USB compuesto: la Leonardo expone simultáneamente un puerto serie CDC (depuración) y un teclado HID (tipo de ejecución), gracias a la clase HID abierta del núcleo de Arduino (HID.cpp en ArduinoCore-avr). A continuación, dominarás el bootloader Caterina: protocolo AVR109 sobre USB CDC, detección mediante "touch" a 1200 baudios, ventana de 8 s y la recuperación de un sketch que monopoliza el bus USB en cada arranque (runaway).

Material

Código completo

// Peripherique composite : CDC (Serial) + clavier HID simultanes
#include <Keyboard.h>

void setup {
  Serial.begin(9600);   // interface CDC : le port serie visible par le PC
  Keyboard.begin;     // interface HID : la carte devient clavier
  delay(3000);          // garde-foc : laisser le temps de placer le curseur
  Serial.println(F("Tapez une ligne : elle sera frappee au clavier."));
}

void loop {
  if (Serial.available > 0) {
    String ligne = Serial.readStringUntil('\n');
    ligne.trim;
    if (ligne.length > 0) {
      Keyboard.print(ligne);   // sortie HID vers l'hote
      Keyboard.releaseAll;
      Serial.println(F("Frappe terminee.")); // echo CDC
    }
  }
}

Verificación esperada

Tras la carga, el ordenador ve a la vez un dispositivo de teclado y un puerto serie. Coloca el cursor en un editor, escribe una línea en el monitor serie: la Leonardo la "vuelve a teclear" en la aplicación enfocada. El descriptor compuesto es elegido automáticamente por el núcleo en cuanto se incluye una biblioteca USB (Keyboard/Mouse) además de Serial.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales