🛠 Utiliser la Due en hôte USB : lire un clavier sur le port Native

Arduino Due · avance · Schéma : IMG-due-avance-2-usb-host-clavier-usbhost.svg — clavier USB branché via un hub alimenté sur le connecteur micro-USB Native de l'Arduino Due, bibliothèque USBHost annotée, moniteur série affichant les touches reçues.

Objetivos

El puerto Native de la Due es controlado directamente por el SAM3X y es OTG: la placa puede convertirse en ANFITRIÓN USB — el tutorial oficial «Keyboard Controller» lo explota con la biblioteca USBHost. Vas a conectar un teclado USB estándar, interceptar las teclas y retranscribirlas por el puerto serie. Es la base para transformar la Due en un panel de control, un lector de dispositivos HID o un registrador de pulsaciones.

Material

Código completo

// Hote USB : clavier HID -> moniteur serie (inspiré du tuto officiel
// docs.arduino.cc/tutorials/due/keyboard-controller)
#include <Keyboard.h>

USBKeyboard Keyboard;
uint8_t addr = 0;

void setup {
  Serial.begin(9600);        // via le port Programming (16U2)
  while (!Serial) { }
  Keyboard.begin;          // la Due devient hote USB sur le port Native
}

void loop {
  Keyboard.Task;           // machine a etat de l'hote USB
  if (Keyboard.getConnected(addr)) {
    while (Keyboard.keyAvailable) {
      Keyboard.key_t k;
      if (Keyboard.getKey(k)) {
        Serial.print("touche: ");
        Serial.print(k.key);
        Serial.print("  etat: ");
        Serial.println(k.state == KEY_PRESSED ? "appuyee" : "relachee");
      }
    }
  }
}

Verificación esperada

Conectar el teclado al puerto Native (mediante el adaptador/hub alimentado): el monitor del puerto Programming muestra cada tecla pulsada/suelta. Desconectar/reconectar el teclado se puede hacer en caliente, la máquina de estados Task gestiona la enumeración y la desconexión. La carga del programa sigue funcionando por el puerto Programming mientras el Native actúa como anfitrión.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales