Los controles deslizantes de gestos son una forma innovadora y divertida de interactuar con tus dispositivos tecnológicos. En este artículo, te enseñaremos cómo crear tu propio control deslizante de gestos con Arduino. ¡Descubre cómo puedes controlar tus dispositivos con simples movimientos de tu mano!
En esta publicación, aprenderá cómo configurar una placa Arduino UNO como un teclado USB HID y cómo deslizar diapositivas usando gestos durante una presentación.
Cómo funciona
Aquí hay un diagrama que describe exactamente cómo funciona todo en conjunto:
Si te gustan los proyectos Arduino y quieres construir más, te recomendamos el curso Proyectos Arduino Paso a Paso – Construye 25 Proyectos.
Arduino UNO o Mega como teclado USB HID
El Arduino se puede configurar para emular un teclado y realizar tareas útiles. Al conectar un botón a un pin digital Arduino, puede ingresar la contraseña, copiar y pegar, aumentar/disminuir el volumen, aumentar/disminuir el brillo de la pantalla, etc. con solo presionar un botón.
Aunque las placas como Arduino UNO no pueden hacer esto de forma predeterminada, puedes convertir la placa Arduino UNO en un teclado USB HID cuando actualizas un nuevo gestor de arranque.
Un Arduino Uno/Mega tiene dos microcontroladores: ATmega328 y 16u2. El 16u2 se utiliza normalmente para comunicación USB a serie. También podemos usarlo como un microcontrolador AVR independiente con (o sin) capacidades USB.
HoodLoader2 te brinda la posibilidad de reprogramar el 16u2 de un Arduino Uno/Mega R3 normal con bocetos personalizados. Esto significa que puedes usar el 16u2 como un AVR USB normal como una placa Arduino Leonardo. Disponen de un núcleo USB HID totalmente compatible.
Puedes preparar tu Arduino UNO o Arduino Mega para que actúe como teclado con el HoodLoader2 Gestor de arranque siguiendo las instrucciones del página wiki oficial.
Placas Arduino compatibles con Arduino IDE 1.6.7 o posterior:
- Uno (requiere el gestor de arranque HoodLoader2)
- Mega (requiere el gestor de arranque HoodLoader2)
- leonardo
- (Pro)micro
Piezas requeridas
Aquí hay una lista completa de los componentes que necesitará para este proyecto:
- Arduino UNOMega, Leonardo, ProMicro o cualquier otra placa compatible con 8u2/16u2/at90usb8/162/32u2/32u4
- 2x sensores ultrasónicos – HC-SR04
- 2x LED
- 2 resistencias de 220 ohmios
- tablero de circuitos
- Cables de puente
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Subir código
Para usar tu Arduino como teclado, necesitas instalar la biblioteca HID.
Instalación de la biblioteca HID
- Haga clic aquí para descargar el HID Biblioteca. Deberías tener una carpeta .zip en tu carpeta de Descargas.
- Descomprima la carpeta .zip y debería obtener maestro oculto Carpeta
- Cambie el nombre de su carpeta de
maestro ocultoA OCULTO - mueve eso OCULTO Carpeta a la carpeta de bibliotecas de instalación de Arduino IDE
- Finalmente, vuelva a abrir su IDE de Arduino
Copie el siguiente código en su IDE de Arduino y cárguelo en su placa Arduino:
/*
* Author: Emmanuel Odunlade
* Complete Project Details https://randomnerdtutorials.com
*/
#include <HID.h>// include the library
int swipe = 0;//slide
boolean left = false;
boolean right = false;
int maxD = 5;//(in cm) maximum distance from ultrasonic at which the obstruction will be considered a gesture
long int lastTouch = -1;
int resetAfter = 1000;//ms
int afterslideDelay = 500;//
int slideleft_Begin = -1;
int slideNone = 0;
int slideright_Begin =1;
//Declaring the connected pins
int lLed = 7;
int rLed = 6;
const int lEcho = 2;
const int lTrig = 3;
const int rEcho = 4;
const int rTrig = 5;
void setup(){
pinMode(lLed,OUTPUT);
pinMode(rLed,OUTPUT);
pinMode(rEcho,INPUT);
pinMode(rTrig,OUTPUT);
pinMode(lEcho,INPUT);
pinMode(lTrig,OUTPUT);
Serial.begin(9600);
// Sends a clean report to the host. This is important because
// the 16u2 of the Uno/Mega is not turned off while programming
// so you want to start with a clean report to avoid strange bugs after reset.
pressRawKeyboard(0, 0);
}
//get distance
//echo is input, trigger is output
unsigned long measureD(int input, int output){
digitalWrite(output, HIGH);
delayMicroseconds(10);
digitalWrite(output, LOW);
long range= pulseIn(input, HIGH);
int distance= range / 29 / 2;// to get distance in cm
return distance;
}
//
boolean act (int input, int output, int led){
int d = measureD(input,output);
boolean pinActivated = false;
if (d < maxD){
digitalWrite(led,HIGH);
pinActivated = true;
}
else{
digitalWrite(led,LOW);
pinActivated = false;
}
return pinActivated;
}
void slideNow(char directn){
if ('R' == directn)
{
// press the right rrow key
//Serial.println("F");
pressRawKeyboard(0,RAW_KEYBOARD_RIGHT_ARROW); //modifiers + key
pressRawKeyboard(0, 0); // release! Important
}
if ('L' == directn)
{
//press the left arrow key
//Serial.println("B"); for debug
pressRawKeyboard(0,RAW_KEYBOARD_LEFT_ARROW); // //modifiers + key
pressRawKeyboard(0, 0); // release! Important
}
delay(afterslideDelay);
swipe = slideNone;
}
void pressRawKeyboard(uint8_t modifiers, uint8_t key){
uint8_t keys[8] = {
modifiers, 0, key, 0, 0, 0, 0, 0 }; //modifiers, reserved, key[0]
HID_SendReport(HID_REPORTID_KeyboardReport, keys, sizeof(keys));
}
void loop(){
left = act(lEcho,lTrig,lLed);
right = act(rEcho,rTrig,rLed);
if (left || right){
lastTouch = millis();
}
if (millis() - lastTouch > resetAfter){
swipe = 0;
//serial.println(@reset slide& timer);
}
if (swipe >= slideNone){
if ((left)&&(!right)){
swipe = slideright_Begin;
}
if ((right)&&(swipe == slideright_Begin)){
slideNow('R');
}
}
if (swipe <= slideNone ){
if ((right)&&(!left)){
swipe = slideleft_Begin;
}
if ((left) && (swipe == slideleft_Begin)){
slideNow('L');
}
}
delay(50);
}
Esquema
Conecte su circuito de acuerdo con el siguiente diagrama:
Ahora, cuando muevas una mano frente al sensor ultrasónico izquierdo, tu Arduino enviará un comando de tecla izquierda que hará que la presentación pase a la diapositiva anterior.
Envolver
Siempre me han fascinado las interfaces de usuario naturales, la idea de cosas como el sexto sentido (sobre el que espero publicar un tutorial en algún momento) y, en general, todas las cosas que hacen que la telequinesis parezca posible.
Por lo tanto, creo que hay varias actualizaciones para este proyecto. Por ejemplo, en lugar de utilizar sensores y controles ultrasónicos, podríamos conectar unos auriculares de electroencefalograma (EEG) y luego hacer cosas más complejas como dibujar formas, todo ello dentro de la simplicidad que ofrece Arduino.
Entonces las posibilidades son infinitas. ¡Únete a nosotros!
Control deslizante de gestos con Arduino
En este artículo aprenderás cómo configurar una placa Arduino UNO como un teclado HID USB y utilizar gestos para deslizar diapositivas durante una presentación.
Este proyecto fue escrito por Emmanuel Odunlade y editado por Rui Santos.
Cómo funciona
El funcionamiento del proyecto se describe en la siguiente figura:
- Se puede configurar un Arduino para emular un teclado y realizar tareas útiles.
- Al conectar un pulsador a un pin digital de Arduino y con una pulsación de botón, se puede escribir una contraseña, copiar y pegar, subir/bajar el volumen, entre otras funciones.
- Para lograr que un Arduino UNO actúe como un teclado USB, es necesario flashear un nuevo bootloader.
Arduino UNO o Mega como teclado USB HID
El proyecto utiliza la biblioteca HID a través de HoodLoader2 para convertir un Arduino UNO o Mega en un teclado USB HID.
La instalación de la biblioteca HID se realiza siguiendo estas instrucciones:
- Descargar la biblioteca HID desde su sitio oficial.
- Descomprimir el archivo descargado y colocarlo en la carpeta de bibliotecas de tu instalación de Arduino IDE.
- Volver a abrir el Arduino IDE.
Partes necesarias
Para este proyecto necesitarás los siguientes componentes:
- Arduino UNO, Mega, Leonardo o ProMicro
- 2x Sensor ultrasónico HC-SR04
- 2x LEDs
- 2x Resistencias de 220 ohmios
- Protoboard
- Cables jumper
Puedes encontrar los componentes mencionados en MakerAdvisor.com/tools.
Código
A continuación se muestra parte del código utilizado en el proyecto:
int swipe = 0; boolean left = false; boolean right = false; int maxD = 5; long int lastTouch = -1; int resetAfter = 1000; int afterslideDelay = 500; int slideleft_Begin = -1; int slideNone = 0; int slideright_Begin = 1; // Resto del código...
Para ver el código completo, puedes visitar la fuente original.
Esquemático
La conexión del circuito se realiza según el siguiente esquema:
Conclusión
Este proyecto es un ejemplo fascinante de cómo la tecnología Arduino puede utilizarse para crear interfaces de usuario intuitivas. Con una mezcla de hardware y software, se logra emular un teclado HID USB y controlar presentaciones con gestos.
Si te interesan los proyectos de Arduino, te recomendamos seguir explorando nuevas posibilidades y experimentar con sensores y actuadores para crear tus propios dispositivos interactivos.