Martin Sturm
/
Project
main.cpp@0:2fab16867d73, 2011-11-30 (annotated)
- Committer:
- XkLi
- Date:
- Wed Nov 30 18:06:50 2011 +0000
- Revision:
- 0:2fab16867d73
- Child:
- 1:44f0b9d5883b
Who changed what in which revision?
User | Revision | Line number | New 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 | } |