Martin Sturm
/
Project
main.cpp@1:44f0b9d5883b, 2011-12-14 (annotated)
- Committer:
- XkLi
- Date:
- Wed Dec 14 02:46:16 2011 +0000
- Revision:
- 1:44f0b9d5883b
- Parent:
- 0:2fab16867d73
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 | 1:44f0b9d5883b | 4 | |
XkLi | 0:2fab16867d73 | 5 | DigitalOut led1(LED1); |
XkLi | 0:2fab16867d73 | 6 | |
XkLi | 0:2fab16867d73 | 7 | InterruptIn interrupt0(p8); //interrupt pin for touch0 |
XkLi | 0:2fab16867d73 | 8 | InterruptIn interrupt1(p21); //interrupt for touch1 |
XkLi | 0:2fab16867d73 | 9 | |
XkLi | 0:2fab16867d73 | 10 | // Setup the i2c bus on pins 9 and 10 |
XkLi | 0:2fab16867d73 | 11 | I2C i2c2(p9, p10); // I2C is used by both touch sensors |
XkLi | 0:2fab16867d73 | 12 | I2C i2c(p28, p27); // I2C is used by both touch sensors |
XkLi | 0:2fab16867d73 | 13 | |
XkLi | 0:2fab16867d73 | 14 | Mpr121 touch1(&i2c, Mpr121::ADD_VSS);//setup touch1 address for vdd |
XkLi | 0:2fab16867d73 | 15 | Mpr121 touch0(&i2c2, Mpr121::ADD_VSS);//setup touch0 address for vss |
XkLi | 0:2fab16867d73 | 16 | |
XkLi | 0:2fab16867d73 | 17 | |
XkLi | 0:2fab16867d73 | 18 | //set serial port |
XkLi | 0:2fab16867d73 | 19 | Serial device(p13, p14); // tx, rx |
XkLi | 0:2fab16867d73 | 20 | |
XkLi | 1:44f0b9d5883b | 21 | int key_code0=0; |
XkLi | 1:44f0b9d5883b | 22 | int key_code1=0; |
XkLi | 0:2fab16867d73 | 23 | |
XkLi | 0:2fab16867d73 | 24 | |
XkLi | 0:2fab16867d73 | 25 | // Key hit/release interrupt routine for touch 0 |
XkLi | 0:2fab16867d73 | 26 | void fallInterrupt0() { |
XkLi | 0:2fab16867d73 | 27 | key_code0=0; |
XkLi | 0:2fab16867d73 | 28 | char i=0; |
XkLi | 0:2fab16867d73 | 29 | int value=touch0.read(0x00); |
XkLi | 0:2fab16867d73 | 30 | value +=touch0.read(0x01)<<8; |
XkLi | 0:2fab16867d73 | 31 | // LED demo mod |
XkLi | 0:2fab16867d73 | 32 | i=0; |
XkLi | 0:2fab16867d73 | 33 | // puts key number out to LEDs for demo |
XkLi | 0:2fab16867d73 | 34 | for (i=0; i<12; i++) { |
XkLi | 1:44f0b9d5883b | 35 | if (((value>>i)&0x01)==1) key_code0+=1<<i; |
XkLi | 0:2fab16867d73 | 36 | } |
XkLi | 1:44f0b9d5883b | 37 | |
XkLi | 0:2fab16867d73 | 38 | |
XkLi | 0:2fab16867d73 | 39 | } |
XkLi | 0:2fab16867d73 | 40 | |
XkLi | 0:2fab16867d73 | 41 | |
XkLi | 0:2fab16867d73 | 42 | //fall interrupt for touch1 |
XkLi | 0:2fab16867d73 | 43 | void fallInterrupt1() { |
XkLi | 0:2fab16867d73 | 44 | |
XkLi | 0:2fab16867d73 | 45 | key_code1=0; |
XkLi | 1:44f0b9d5883b | 46 | int i=0; |
XkLi | 0:2fab16867d73 | 47 | int value=touch1.read(0x00); |
XkLi | 0:2fab16867d73 | 48 | value +=touch1.read(0x01)<<8; |
XkLi | 0:2fab16867d73 | 49 | // LED demo mod |
XkLi | 0:2fab16867d73 | 50 | i=0; |
XkLi | 0:2fab16867d73 | 51 | // puts key number out to LEDs for demo |
XkLi | 0:2fab16867d73 | 52 | for (i=0; i<12; i++) { |
XkLi | 1:44f0b9d5883b | 53 | if (((value>>i)&0x01)==1) key_code1+=1<<i; |
XkLi | 0:2fab16867d73 | 54 | } |
XkLi | 1:44f0b9d5883b | 55 | |
XkLi | 0:2fab16867d73 | 56 | } |
XkLi | 0:2fab16867d73 | 57 | |
XkLi | 0:2fab16867d73 | 58 | |
XkLi | 0:2fab16867d73 | 59 | |
XkLi | 0:2fab16867d73 | 60 | int main() { |
XkLi | 1:44f0b9d5883b | 61 | //device.printf("Starting \r\n"); |
XkLi | 0:2fab16867d73 | 62 | |
XkLi | 0:2fab16867d73 | 63 | char frompc=0; |
XkLi | 1:44f0b9d5883b | 64 | device.baud(115200); |
XkLi | 0:2fab16867d73 | 65 | interrupt0.fall(&fallInterrupt0); |
XkLi | 0:2fab16867d73 | 66 | interrupt0.mode(PullUp); |
XkLi | 0:2fab16867d73 | 67 | interrupt1.fall(&fallInterrupt1); |
XkLi | 0:2fab16867d73 | 68 | interrupt1.mode(PullUp); |
XkLi | 1:44f0b9d5883b | 69 | |
XkLi | 1:44f0b9d5883b | 70 | |
XkLi | 0:2fab16867d73 | 71 | while (1) { |
XkLi | 1:44f0b9d5883b | 72 | |
XkLi | 1:44f0b9d5883b | 73 | |
XkLi | 1:44f0b9d5883b | 74 | if(device.readable()){ //checks if ebox sends request |
XkLi | 0:2fab16867d73 | 75 | frompc=device.getc(); |
XkLi | 1:44f0b9d5883b | 76 | |
XkLi | 0:2fab16867d73 | 77 | |
XkLi | 1:44f0b9d5883b | 78 | switch(frompc)//read character and check it |
XkLi | 0:2fab16867d73 | 79 | { |
XkLi | 0:2fab16867d73 | 80 | case '0': //if character is '0' send key data from touch 0 |
XkLi | 1:44f0b9d5883b | 81 | device.printf("%04d",key_code0); |
XkLi | 0:2fab16867d73 | 82 | break; |
XkLi | 0:2fab16867d73 | 83 | |
XkLi | 0:2fab16867d73 | 84 | case '1': //if character is '1' send key data from touch 1 |
XkLi | 1:44f0b9d5883b | 85 | device.printf("%04d",key_code1); |
XkLi | 0:2fab16867d73 | 86 | break; |
XkLi | 0:2fab16867d73 | 87 | |
XkLi | 0:2fab16867d73 | 88 | case 'A': //case for string value |
XkLi | 1:44f0b9d5883b | 89 | device.printf("%04d",Strings()); |
XkLi | 0:2fab16867d73 | 90 | break; |
XkLi | 0:2fab16867d73 | 91 | |
XkLi | 0:2fab16867d73 | 92 | default: |
XkLi | 0:2fab16867d73 | 93 | break; |
XkLi | 0:2fab16867d73 | 94 | } |
XkLi | 0:2fab16867d73 | 95 | |
XkLi | 1:44f0b9d5883b | 96 | |
XkLi | 1:44f0b9d5883b | 97 | } |
XkLi | 0:2fab16867d73 | 98 | } |
XkLi | 0:2fab16867d73 | 99 | } |