Dependencies:   mbed

Committer:
XkLi
Date:
Wed Nov 30 18:06:50 2011 +0000
Revision:
0:2fab16867d73
Child:
1:44f0b9d5883b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XkLi 0:2fab16867d73 1 #include <mbed.h>
XkLi 0:2fab16867d73 2 #include <mpr121.h>
XkLi 0:2fab16867d73 3 #include "strings.h"
XkLi 0:2fab16867d73 4 DigitalOut led1(LED1);
XkLi 0:2fab16867d73 5 DigitalOut led2(LED2);
XkLi 0:2fab16867d73 6 DigitalOut led3(LED3);
XkLi 0:2fab16867d73 7 DigitalOut led4(LED4);
XkLi 0:2fab16867d73 8
XkLi 0:2fab16867d73 9 InterruptIn interrupt0(p8); //interrupt pin for touch0
XkLi 0:2fab16867d73 10 InterruptIn interrupt1(p21); //interrupt for touch1
XkLi 0:2fab16867d73 11
XkLi 0:2fab16867d73 12 // Setup the i2c bus on pins 9 and 10
XkLi 0:2fab16867d73 13 I2C i2c2(p9, p10); // I2C is used by both touch sensors
XkLi 0:2fab16867d73 14 I2C i2c(p28, p27); // I2C is used by both touch sensors
XkLi 0:2fab16867d73 15
XkLi 0:2fab16867d73 16 Mpr121 touch1(&i2c, Mpr121::ADD_VSS);//setup touch1 address for vdd
XkLi 0:2fab16867d73 17 Mpr121 touch0(&i2c2, Mpr121::ADD_VSS);//setup touch0 address for vss
XkLi 0:2fab16867d73 18
XkLi 0:2fab16867d73 19
XkLi 0:2fab16867d73 20 //set serial port
XkLi 0:2fab16867d73 21 Serial device(p13, p14); // tx, rx
XkLi 0:2fab16867d73 22
XkLi 0:2fab16867d73 23
XkLi 0:2fab16867d73 24 Serial pc(USBTX, USBRX);
XkLi 0:2fab16867d73 25
XkLi 0:2fab16867d73 26 unsigned int key_code0;
XkLi 0:2fab16867d73 27 unsigned int key_code1;
XkLi 0:2fab16867d73 28
XkLi 0:2fab16867d73 29
XkLi 0:2fab16867d73 30 // Key hit/release interrupt routine for touch 0
XkLi 0:2fab16867d73 31 void fallInterrupt0() {
XkLi 0:2fab16867d73 32 key_code0=0;
XkLi 0:2fab16867d73 33 char i=0;
XkLi 0:2fab16867d73 34 int value=touch0.read(0x00);
XkLi 0:2fab16867d73 35 value +=touch0.read(0x01)<<8;
XkLi 0:2fab16867d73 36 // LED demo mod
XkLi 0:2fab16867d73 37 i=0;
XkLi 0:2fab16867d73 38 // puts key number out to LEDs for demo
XkLi 0:2fab16867d73 39 for (i=0; i<12; i++) {
XkLi 0:2fab16867d73 40 if (((value>>i)&0x01)==1) key_code0=i+1;
XkLi 0:2fab16867d73 41 }
XkLi 0:2fab16867d73 42 led4=key_code0 & 0x01;
XkLi 0:2fab16867d73 43 led3=(key_code0>>1) & 0x01;
XkLi 0:2fab16867d73 44 led2=(key_code0>>2) & 0x01;
XkLi 0:2fab16867d73 45 led1=(key_code0>>3) & 0x01;
XkLi 0:2fab16867d73 46
XkLi 0:2fab16867d73 47 }
XkLi 0:2fab16867d73 48
XkLi 0:2fab16867d73 49
XkLi 0:2fab16867d73 50 //fall interrupt for touch1
XkLi 0:2fab16867d73 51 void fallInterrupt1() {
XkLi 0:2fab16867d73 52
XkLi 0:2fab16867d73 53 key_code1=0;
XkLi 0:2fab16867d73 54 char i=0;
XkLi 0:2fab16867d73 55 int value=touch1.read(0x00);
XkLi 0:2fab16867d73 56 value +=touch1.read(0x01)<<8;
XkLi 0:2fab16867d73 57 // LED demo mod
XkLi 0:2fab16867d73 58 i=0;
XkLi 0:2fab16867d73 59 // puts key number out to LEDs for demo
XkLi 0:2fab16867d73 60 for (i=0; i<12; i++) {
XkLi 0:2fab16867d73 61 if (((value>>i)&0x01)==1) key_code1=i+1;
XkLi 0:2fab16867d73 62 }
XkLi 0:2fab16867d73 63 led4=key_code1 & 0x01;
XkLi 0:2fab16867d73 64 led3=(key_code1>>1) & 0x01;
XkLi 0:2fab16867d73 65 led2=(key_code1>>2) & 0x01;
XkLi 0:2fab16867d73 66 led1=(key_code1>>3) & 0x01;
XkLi 0:2fab16867d73 67 }
XkLi 0:2fab16867d73 68
XkLi 0:2fab16867d73 69
XkLi 0:2fab16867d73 70
XkLi 0:2fab16867d73 71
XkLi 0:2fab16867d73 72
XkLi 0:2fab16867d73 73
XkLi 0:2fab16867d73 74
XkLi 0:2fab16867d73 75 int main() {
XkLi 0:2fab16867d73 76
XkLi 0:2fab16867d73 77 pc.printf("Starting \r\n");
XkLi 0:2fab16867d73 78
XkLi 0:2fab16867d73 79
XkLi 0:2fab16867d73 80 char *key_buf;//buffer for data transmit to pc via serial
XkLi 0:2fab16867d73 81 char frompc=0;
XkLi 0:2fab16867d73 82 device.baud(9600);
XkLi 0:2fab16867d73 83 interrupt0.fall(&fallInterrupt0);
XkLi 0:2fab16867d73 84 interrupt0.mode(PullUp);
XkLi 0:2fab16867d73 85 interrupt1.fall(&fallInterrupt1);
XkLi 0:2fab16867d73 86 interrupt1.mode(PullUp);
XkLi 0:2fab16867d73 87
XkLi 0:2fab16867d73 88 while (1) {
XkLi 0:2fab16867d73 89 wait(10);
XkLi 0:2fab16867d73 90 if(device.readable()) //checks if ebox sends request
XkLi 0:2fab16867d73 91 frompc=device.getc();
XkLi 0:2fab16867d73 92 pc.printf(&frompc);//writes received data to pc for testing options
XkLi 0:2fab16867d73 93
XkLi 0:2fab16867d73 94 switch(device.getc())//read character and check it
XkLi 0:2fab16867d73 95 {
XkLi 0:2fab16867d73 96 case '0': //if character is '0' send key data from touch 0
XkLi 0:2fab16867d73 97 sprintf(key_buf,"%d",key_code0);
XkLi 0:2fab16867d73 98 device.printf(key_buf);
XkLi 0:2fab16867d73 99 break;
XkLi 0:2fab16867d73 100
XkLi 0:2fab16867d73 101 case '1': //if character is '1' send key data from touch 1
XkLi 0:2fab16867d73 102 sprintf(key_buf,"%d",key_code1);
XkLi 0:2fab16867d73 103 device.printf(key_buf);
XkLi 0:2fab16867d73 104 break;
XkLi 0:2fab16867d73 105
XkLi 0:2fab16867d73 106 case 'A': //case for string value
XkLi 0:2fab16867d73 107 sprintf(key_buf,"%d",Strings());
XkLi 0:2fab16867d73 108 device.printf(key_buf);
XkLi 0:2fab16867d73 109 break;
XkLi 0:2fab16867d73 110
XkLi 0:2fab16867d73 111 default:
XkLi 0:2fab16867d73 112 break;
XkLi 0:2fab16867d73 113 }
XkLi 0:2fab16867d73 114
XkLi 0:2fab16867d73 115 pc.printf(key_buf);//writes received data to pc for testing options
XkLi 0:2fab16867d73 116 }
XkLi 0:2fab16867d73 117 }