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. }