Paso 2: Codificación - parte I
Primera prueba - dirección y botones
TouchPad, informa el movimiento del dedo. Uno obtiene un par de coordenadas que indica la cantidad de movimiento y la dirección desde la última posición. Por ejemplo -12, 2 significaría un golpe hacia 10:00 y el movimiento del eje x siendo más rápido.
Resulta que, incluso el grifo funcionalidad funciona perfectamente.
----------------------
El código:
Arduino + TouchPad del ordenador portátil. Funcionalidad básica
//
http://Metku.net
Jani Pönkkö
23.07.2009
#include "PS2Mouse.h"
#include "LedControl.h"
#define MDATA 5 / / pin de datos de ps/2 touchpad
#define MCLK 6 / ps/2 touchpad reloj pin
#define sensibilidad 5 / cantidad de movimiento necesaria obtener una reacción
LedControl lc=LedControl(12,11,10,1); Foro pin outs
PS2Mouse mouse_one (MCLK, MDATA, mando a distancia);
void setup()
{
lc.setIntensity(0,8);
LC.Shutdown(0,false); necesita sacar el máximo de parada
lc.clearDisplay(0);
Delay(10);
Serial.Begin(115200);
mouse_one.Initialize();
mouse_one.set_scaling_1_1();
}
void loop()
{
int datos [2];
mouse_one.Report(Data);
Serial.Print(Data[0]); Byte de estado
Serial.Print(":");
Serial.Print(Data[1]); X datos de movimiento
Serial.Print(",");
Serial.Print(Data[2]); Datos de movimiento Y
Serial.println();
dibujar el cuadro inicial del centro
lc.clearDisplay(0);
Si no hay movimiento, ilumina el bloque de centro
Si (datos [1] == 0 & & data[2]==0)
{
lc.setLed(0,3,3,true);
lc.setLed(0,3,4,true);
lc.setLed(0,4,3,true);
lc.setLed(0,4,4,true);
}
X movimiento
Si (datos [1] > sensibilidad)
{
lc.setLed(0,1,3,true);
lc.setLed(0,1,4,true);
lc.setLed(0,2,3,true);
lc.setLed(0,2,4,true);
}
Si (datos [1] <-sensibilidad)
{
lc.setLed(0,5,3,true);
lc.setLed(0,5,4,true);
lc.setLed(0,6,3,true);
lc.setLed(0,6,4,true);
}
Y movimiento
Si (datos [2] > sensibilidad)
{
lc.setLed(0,3,1,true);
lc.setLed(0,3,2,true);
lc.setLed(0,4,1,true);
lc.setLed(0,4,2,true);
}
Si (datos [2] <-sensibilidad)
{
lc.setLed(0,3,5,true);
lc.setLed(0,3,6,true);
lc.setLed(0,4,5,true);
lc.setLed(0,4,6,true);
}
Botón izquierdo
if(Data[0]==10)
{
lc.setLed(0,0,6,true);
lc.setLed(0,0,7,true);
lc.setLed(0,1,6,true);
lc.setLed(0,1,7,true);
}
Botón del medio
if(Data[0]==12)
{
lc.setLed(0,3,6,true);
lc.setLed(0,3,7,true);
lc.setLed(0,4,6,true);
lc.setLed(0,4,7,true);
}
Botón derecho
if(Data[0]==9)
{
lc.setLed(0,6,6,true);
lc.setLed(0,6,7,true);
lc.setLed(0,7,6,true);
lc.setLed(0,7,7,true);
}
algunos retrasan así que uno puede ver los leds correctamente
Delay(100);
}