mbed with Nintendo DS touchpad, accelerometer & touchpad.

Dependencies:   mbed

Committer:
Clemo
Date:
Wed May 05 12:10:15 2010 +0000
Revision:
0:0a76ae27065b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Clemo 0:0a76ae27065b 1 /*
Clemo 0:0a76ae27065b 2 Touchpad driver.
Clemo 0:0a76ae27065b 3
Clemo 0:0a76ae27065b 4 CPV, 3/9/2009
Clemo 0:0a76ae27065b 5 */
Clemo 0:0a76ae27065b 6
Clemo 0:0a76ae27065b 7 #include "touchpad.h"
Clemo 0:0a76ae27065b 8
Clemo 0:0a76ae27065b 9
Clemo 0:0a76ae27065b 10 void TouchpadChannel::initialise(int min, int quantise_step)
Clemo 0:0a76ae27065b 11 {
Clemo 0:0a76ae27065b 12 m_min = min;
Clemo 0:0a76ae27065b 13 m_quantise_step = quantise_step;
Clemo 0:0a76ae27065b 14 m_filter.initialise(8);
Clemo 0:0a76ae27065b 15 m_quantised = -1;
Clemo 0:0a76ae27065b 16 }
Clemo 0:0a76ae27065b 17
Clemo 0:0a76ae27065b 18
Clemo 0:0a76ae27065b 19 int TouchpadChannel::quantise(void)
Clemo 0:0a76ae27065b 20 {
Clemo 0:0a76ae27065b 21 m_quantised = -1;
Clemo 0:0a76ae27065b 22 int raw = m_filter();
Clemo 0:0a76ae27065b 23 if (raw>m_min)
Clemo 0:0a76ae27065b 24 {
Clemo 0:0a76ae27065b 25 m_quantised = 0;
Clemo 0:0a76ae27065b 26 while(raw>m_quantise_step)
Clemo 0:0a76ae27065b 27 {
Clemo 0:0a76ae27065b 28 raw -= m_quantise_step;
Clemo 0:0a76ae27065b 29 m_quantised += 1;
Clemo 0:0a76ae27065b 30 }
Clemo 0:0a76ae27065b 31 }
Clemo 0:0a76ae27065b 32 return m_quantised;
Clemo 0:0a76ae27065b 33 }
Clemo 0:0a76ae27065b 34
Clemo 0:0a76ae27065b 35
Clemo 0:0a76ae27065b 36 //===============================================
Clemo 0:0a76ae27065b 37
Clemo 0:0a76ae27065b 38
Clemo 0:0a76ae27065b 39 Touchpad::Touchpad(PinName x0, PinName x1, PinName y0, PinName y1)
Clemo 0:0a76ae27065b 40 {
Clemo 0:0a76ae27065b 41 m_x0 = x0;
Clemo 0:0a76ae27065b 42 m_x1 = x1;
Clemo 0:0a76ae27065b 43 m_y0 = y0;
Clemo 0:0a76ae27065b 44 m_y1 = y1;
Clemo 0:0a76ae27065b 45 m_ch_x.initialise(0.1*0xffff,0.16*0xffff);
Clemo 0:0a76ae27065b 46 m_ch_y.initialise(0.1*0xffff,0.22*0xffff);
Clemo 0:0a76ae27065b 47 }
Clemo 0:0a76ae27065b 48
Clemo 0:0a76ae27065b 49
Clemo 0:0a76ae27065b 50 int Touchpad::read(PinName drive_hi, PinName drive_lo, PinName read_hi, PinName read_lo)
Clemo 0:0a76ae27065b 51 {
Clemo 0:0a76ae27065b 52 DigitalOut out1(drive_hi);
Clemo 0:0a76ae27065b 53 DigitalOut out0(drive_lo);
Clemo 0:0a76ae27065b 54 AnalogIn in1(read_hi);
Clemo 0:0a76ae27065b 55 AnalogIn in0(read_lo);
Clemo 0:0a76ae27065b 56 out0 = 0;
Clemo 0:0a76ae27065b 57 out1 = 1;
Clemo 0:0a76ae27065b 58 return in1.read_u16();
Clemo 0:0a76ae27065b 59 }
Clemo 0:0a76ae27065b 60
Clemo 0:0a76ae27065b 61
Clemo 0:0a76ae27065b 62 void Touchpad::tick(void)
Clemo 0:0a76ae27065b 63 {
Clemo 0:0a76ae27065b 64 m_ch_x.tick(read_x());
Clemo 0:0a76ae27065b 65 m_ch_y.tick(read_y());
Clemo 0:0a76ae27065b 66 }