Arduino + Laptop Touchpad (2 / 3 steg)
Steg 2: Coding - del I
Första testet - riktning och knappar
TouchPad rapporterar förflyttningen av fingret. Man får ett par koordinater som anges mängden rörelse och riktning från den sista positionen. Till exempel -12, 2 skulle innebära en känga mot klockan 10 och x-rörelsen att vara snabbare.
Som det visar sig, även tap funktionalitet fungerar perfekt.
----------------------
Koden:
Arduino + Laptop TouchPad. Grundläggande funktioner
//
http://metku.net
Jani Pönkkö
23.07.2009
#include "PS2Mouse.h"
#include "LedControl.h"
#define MDATA 5 / / touchpad ps/2 data stift
#define MCLK 6 / / touchpad ps/2 klocka pin
#define känslighet 5 / / rörelsen behövs för att få en reaktion
LedControl lc=LedControl(12,11,10,1); forumet pin outs
PS2Mouse mouse_one (MCLK, MDATA, fjärrkontroll);
void setup()
{
lc.setIntensity(0,8);
LC.Shutdown(0,false); behöva ta MAX ur avstängning
lc.clearDisplay(0);
Delay(10);
Serial.BEGIN(115200);
mouse_one.Initialize();
mouse_one.set_scaling_1_1();
}
void loop()
{
int data [2].
mouse_one.Report(data);
Serial.Print(data[0]); Status Byte
Serial.Print(":");
Serial.Print(data[1]); X-rörelse Data
Serial.Print(",");
Serial.Print(data[2]); Y rörelse Data
Serial.println();
Rita första rutan till centrum
lc.clearDisplay(0);
om ingen rörelse, tändas center blocket
om (data [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-rörelse
om (data [1] > känslighet)
{
lc.setLed(0,1,3,true);
lc.setLed(0,1,4,true);
lc.setLed(0,2,3,true);
lc.setLed(0,2,4,true);
}
om (data [1] <-känslighet)
{
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-rörelse
om (data [2] > känslighet)
{
lc.setLed(0,3,1,true);
lc.setLed(0,3,2,true);
lc.setLed(0,4,1,true);
lc.setLed(0,4,2,true);
}
om (data [2] <-känslighet)
{
lc.setLed(0,3,5,true);
lc.setLed(0,3,6,true);
lc.setLed(0,4,5,true);
lc.setLed(0,4,6,true);
}
Vänster knapp
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);
}
Mittenknappen
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);
}
Höger knapp
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);
}
några förseningar så man kan se lysdioderna ordentligt
Delay(100);
}