En este tutorial voy a explicar como realizar un mouse táctil basado en Arduino ProMicro. Está pensado para que lo utilicen personas con problemas motrices. Ya sea en PC (MS-Windows, GNU/Linux o MacOS) o en dispositivos Android.
Suscribite al Canal!!!
Todo dispositivo de integración para personas con problemas motrices o con alguna discapacidad, son de precio elevado, muy elevado y no solo difíciles de conseguir, sino que también, no todos pueden acceder a él.
Este es un proyecto muy interesante. Es simple de hacer, fácil de programar y también un gran proyecto para todos los «MAKERS» como yo y para ayudar, como dije antes, a una persona con problemas motrices. Así que a no perder el tiempo y a hacer este proyecto.
Lista de materiales:
- Arduino ProMicro o Leonardo (recomendado ProMicro por cuestión de tamaño).
- 5 resistencia de 1Mohm.
- 1 protoboard o placa de prototipos (opcional ya que podemos soldar las resistencias directamente al arduino, pero es recomendable para el prototipo final la placa perforada de prototipos).
- Cables de conexión.
- Rollo de papel aluminio de cocina.
- Cartón, isopor/tergopol o un recorte de fibrofácil de tamaño A4 aprox (medida ideal, puede ser redondo cuadrado o rectangular, esto es a gusto o necesidad)
Diagrama de cableado / diagrama de circuito:

Conexión de los pines
Conectar las resistencias de 1MΩ a los siguientes pines: (4, 2) (5, 3) (8, 6) (9, 7) (15, 16) Como se muestra en la imagen de arriba.
Conectar todos los sensores capacitivos a los siguientes pines:
- Superior al pin 2.
- Derecho al pin 3.
- Izquierdo al pin 6.
- Inferior al pin 7.
- Selección a Pin 16.
Cabe aclarar que el sensor puede ser el propio cable, o lo que se conecte a él, ya sea papel de aluminio, papel de cobre, una moneda, chapitas, etc.
Necesitaremos las librerías:
- CapacitiveSensor.h
- Mouse.h
Cargar el código:
Código totalmente modificable y adaptable a nuevas necesidades futuras.
#include <CapacitiveSensor.h>
#include <Mouse.h>
long time = 0;
CapacitiveSensor csTOP = CapacitiveSensor(4,2); //Pin 2 será el táctil.
CapacitiveSensor csRIGHT = CapacitiveSensor(5,3); //Pin 3 será el táctil.
CapacitiveSensor csLEFT = CapacitiveSensor(8,6); //Pin 6 será el táctil.
CapacitiveSensor csBOTTOM = CapacitiveSensor(9,7); //Pin 7 será el táctil.
CapacitiveSensor csSELECT = CapacitiveSensor(15,16); //Pin 16 será el táctil.
void setup()
{
Mouse.begin();
Serial.begin(9600);
csTOP.set_CS_AutocaL_Millis(0xFFFFFFFF); //Calibra el sensor arriba.
csRIGHT.set_CS_AutocaL_Millis(0xFFFFFFFF); //Calibra el sensor derecha.
csLEFT.set_CS_AutocaL_Millis(0xFFFFFFFF); //Calibra el sensor izquierda.
csBOTTOM.set_CS_AutocaL_Millis(0xFFFFFFFF); //Calibra el sensor abajo.
csSELECT.set_CS_AutocaL_Millis(0xFFFFFFFF); //Calibra el sensor selector.
}
void loop()
{
int X = 0, Y = 0; //variables temporales para ejes X e Y.
long sensorTop = csTOP.capacitiveSensor(30);
long sensorRight = csRIGHT.capacitiveSensor(30);
long sensorLeft = csLEFT.capacitiveSensor(30);
long sensorBottom = csBOTTOM.capacitiveSensor(30);
long sensorSelect = csSELECT.capacitiveSensor(30);
if(sensorTop >= 60){
Y = -2;
}
//si el valor del sensor capacitivo "arriba" es mayor o igual a 60, establezca el valor de Y en -2.
if(sensorBottom >= 60){
Y = 2;
}
//si el valor del sensor capacitivo "abajo" es mayor o igual a 60, establezca el valor de Y en 2.
if(sensorRight >= 60){
X = 2;
}
//si el valor del sensor capacitivo "derecha" es mayor o igual a 60, establezca el valor de X en 2.
if(sensorLeft >= 60){
X = -2;
}
//si el valor del sensor capacitivo "izquierda" es mayor o igual a 60, establezca el valor de X en -2.
if(sensorSelect >= 60){
Mouse.press(MOUSE_LEFT);
}
//si el valor del sensor capacitivo "selector" es mayor o igual a 60, entonces presiona botón izquierdo del mouse.
else{
Mouse.release(MOUSE_LEFT);
}
//sino, si el valor del sensor capacitivo del botón Selector es inferior a 60, suelte el botón izquierdo del mouse.
Serial.println(millis()-time);
Mouse.move(X , Y , 0); //Mover el mouse a la posición X e Y.
Serial.println("Mouse Position: X , Y = ");
Serial.print(X); //Imprimir el valor de X en el monitor serial.
Serial.print("\t");
Serial.print(Y); //Imprimir el valor de y en el monitor serial.
}