Paso 2: Codigo y USB HID
Los Arduino Micro o Leonardo tienen un microcontrolador 32u4 que una diferencia del 328p del Arduino UNO, el 32u4 tiene integrada la emulación USB HID (dispositivo de interfaz humana) nos permite emular un teclado o ratón como el usamos cotidianamente en nuestra computadora.
Arduino nos información unas librerías para podamos manejar la emulación de una manera sencilla, este es el código usado para automatizar los clics
<br><p>/*<br>By Gabo Redfield - The inventors House programa para el arduino leonardo</p><p>Manda pulsaciones y mueve el raton de forma cuadrangular en la pantalla del juego presentado. Los procesos no son seriales, así que en el instante que se active o se desactive, va a estar en el estado que se quedo hasta que se reanude.</p><p>*/ short int bot = 8; // declaramos variable de cuál va a ser nuestro botón para que trabaje int endw = 250; // declaramos cuánto va a medir la longitud de "pixeles" hacia los lados int endh = 70; // declaramos cuánto va a medir la longitud de "pixeles" en altura int tmp = 0; // una variable donde va a guardar el conteo de movimientos int led = 13; // indicamos el pin del led del arduino (por default es 13) int step1 = 0; // bandera del proceso que va a ejecutar(mover mouse x/y dirección) void setup() { //Serial.begin(9600); // opción de imprimir en el puerto serial pinMode(bot, INPUT); // Creamos el botón que va a controlar el proceso pinMode(led, OUTPUT); // prenderá el led 13 en caso de que se active el proceso digitalWrite(13, 0); // empieza el led del arduino apagado Mouse.begin(); // llamamos llamar a las clase del mouse }</p><p>void loop(){ if(digitalRead(bot) == 1){ // si está activo el estado del botón, procede a trabajar digitalWrite(led, 1); //Mouse.move(xDistance, yDistance, 0); // opcion de enviar las coordenadas al puerto serial //Serial.print(tmp); //Serial.print(","); //Serial.println(step1); // a base de banderas, indica la acción que va a ejecutar if(step1 == 0) Mouse.move(1, 0, 0); // mover uno a la derecha else if(step1 == 1) Mouse.move(0, 1, 0); // mover uno abajo else if(step1 == 2) Mouse.move(-1, 0, 0); // mover uno a la izquierda else if(step1 == 3) Mouse.move(0, -1, 0); // mover uno arriba if((tmp >= endw) && (step1 == 0)){ // espera a que el contador TMP sea menor al ancho puesto, si lo cumple y la bandera es 0 (mover uno a la derecha) hace lo sigueinte: step1 = 1; // Cambia la bandera a 1 (mover abajo) tmp = 0; // Cambia el valor de la variable contador TMP a 0 }else if((tmp >= endh) && (step1 == 1)){ // espera a que cumpla la condición similar a la anterior, solo que esta vez con la bandera en 1(mover abajo) step1 = 2; // // Cambia la bandera a 2 (mover a la izquierda) tmp = 0; }else if((tmp >= endw) && (step1 == 2)){ step1 = 3; // Cambia la bandera a 3 (mover hacia arriba) tmp = 0; }else if((tmp >= endh) && (step1 == 3)){ step1 = 0; tmp = 0; }else tmp++; // la variable va a aumentar uno if((tmp == 50)||(tmp == 100)||(tmp == 90)||(tmp == 80)||(tmp == 85)){ // indicamos en que valores del contador va a precionar el boton izquierdo del mouse Mouse.press(MOUSE_LEFT); // mantiene precionado el botón izquierdo del mouse Mouse.release(MOUSE_LEFT); // ya no mantiene precionado el botón izquierdo del mouse } }else{ digitalWrite(led, 0); // como no está activo, mantiene el led(arduino) apagado } }</p>