Es posible interconectar Arduino con el ordenador y convertirlo en un dispositivo HID. Así, es posible transformar un Arduino en un controlador de ordenador, del mismo modo que un mando de videojuegos, un teclado de ordenador o un ratón.
Material
- Arduino UNO
- pulsador (o 1 cable dupont)
Esquema
En este tutorial utilizaremos una sola entrada para probar el teclado y la configuración del dispositivo HID. Así que colocamos un pulsador entre el pin GND y el pin A0 del Arduino.
Puedes utilizar un botón para cada tecla o cualquier sensor para crear tu propio controlador.
Código
Como sólo tenemos un botón, cada vez que lo pulsamos incrementamos la variable btnCount para cambiar el siguiente carácter a mostrar.
//azerty q b c d e f g h i j k l , n o p a r s t u v z x y w & é " ' ( - è _ ç à ) = ^ $ * No fr m ù ² ; : ! < //qwerty a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 - = [ ] \ No US ; ' ` , . / No US //keycode 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39, 45,46,47,48,49, 50, 51,52, 53, 54,55,56, 100}; uint8_t buf[8] = { 0 }; //Keyboard report buffer //Keypad const int btnPin = A0; int btnState=false,oldState=true; int btnCount=4; //Key code A-4 Z-29 void setup() { Serial.begin(9600); pinMode(btnPin,INPUT_PULLUP); } void loop() { sendKey(); } void sendKey() { /* function readAbtn */ //// Read button states from keypad getBtn(); if (btnState!=oldState and btnState==true) { buf[2] = btnCount++; // keycode Serial.write(buf, 8); // Send keypress releaseKey(); } if(btnCount>29) btnCount=4; oldState=btnState; } void getBtn() { /* function getABtn */ //// Read button states from keypad if (analogRead(btnPin) > 200) { btnState=false; } else { btnState=true; } delay(100); //anti-bounce delay } void releaseKey() { buf[0] = 0; buf[2] = 0; Serial.write(buf, 8); // Send Release key }
Para simplificar el código y evitar tener que encontrar los keycodes, puedes usar la librería USBKeyboard, Keyboard.h (para placas compatibles) o HID-project (con HoodLoader2).
Configuración del dispositivo HID
Para transformar el Arduino en un dispositivo HID, necesitamos modificar el código del puerto USB controlado por el ATmega16U2. Para ello utilizaremos el software Flip, que nos permitirá cambiar el firmware del microprocesador.
- Descargue e instale el logiciel Flip
- Seleccione el microprocesador de la lista
- Reinicia el puerto USB conectando los dos pines más a la izquierda del puerto ICSP2. (los LEDs Tx y Rx deberían encenderse).
- Selecciona Configuración>Comunicación>USB Ctrl+U, y luego haz clic en «Abrir».
- Cargue el archivo Arduino-keyboard-0.3.hex en Archivo> Cargar HEX…, luego pulse «Ejecutar».
Resultado
Una vez hecho esto, desconecte y vuelva a conectar el puerto USB. Abrir un archivo de texto. Al pulsar el botón, los caracteres deben aparecer sucesivamente. Observará que las teclas a,q,w,z están invertidas porque el teclado está configurado en AZERTY.
Cambiar el Arduino de un dispositivo HID a un dispositivo serie
Pour retrouver un fonctionnement normal de l’Arduino, on refait la manipulation avec le logiciel Flip mais à la place du fichier arduino-keyboard.hex on charge le fichier Arduino-usbserial-uno.hex.
Reinicia el puerto USB con un puente entre los pines ICSP, luego carga el archivo hexadecimal y pulsa «Ejecutar».
Aplicaciones
- Crea un teclado o un mando de videojuegos con Arduino
- Utilizar Arduino para manejar un ordenador automáticamente
a mi me dice cuando le voy ha dar al simbolo del usb que la carpeta atlibusbdfu not fuend