Martin Sturm
/
Project
Revision 1:44f0b9d5883b, committed 2011-12-14
- Comitter:
- XkLi
- Date:
- Wed Dec 14 02:46:16 2011 +0000
- Parent:
- 0:2fab16867d73
- Commit message:
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
strings.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Nov 30 18:06:50 2011 +0000 +++ b/main.cpp Wed Dec 14 02:46:16 2011 +0000 @@ -1,10 +1,8 @@ #include <mbed.h> #include <mpr121.h> #include "strings.h" + DigitalOut led1(LED1); -DigitalOut led2(LED2); -DigitalOut led3(LED3); -DigitalOut led4(LED4); InterruptIn interrupt0(p8); //interrupt pin for touch0 InterruptIn interrupt1(p21); //interrupt for touch1 @@ -20,11 +18,8 @@ //set serial port Serial device(p13, p14); // tx, rx - -Serial pc(USBTX, USBRX); - -unsigned int key_code0; -unsigned int key_code1; + int key_code0=0; + int key_code1=0; // Key hit/release interrupt routine for touch 0 @@ -37,12 +32,9 @@ i=0; // puts key number out to LEDs for demo for (i=0; i<12; i++) { - if (((value>>i)&0x01)==1) key_code0=i+1; + if (((value>>i)&0x01)==1) key_code0+=1<<i; } - led4=key_code0 & 0x01; - led3=(key_code0>>1) & 0x01; - led2=(key_code0>>2) & 0x01; - led1=(key_code0>>3) & 0x01; + } @@ -51,67 +43,57 @@ void fallInterrupt1() { key_code1=0; - char i=0; + int i=0; int value=touch1.read(0x00); value +=touch1.read(0x01)<<8; // LED demo mod i=0; // puts key number out to LEDs for demo for (i=0; i<12; i++) { - if (((value>>i)&0x01)==1) key_code1=i+1; + if (((value>>i)&0x01)==1) key_code1+=1<<i; } - led4=key_code1 & 0x01; - led3=(key_code1>>1) & 0x01; - led2=(key_code1>>2) & 0x01; - led1=(key_code1>>3) & 0x01; + } - - - - int main() { - -pc.printf("Starting \r\n"); - +//device.printf("Starting \r\n"); -char *key_buf;//buffer for data transmit to pc via serial char frompc=0; - device.baud(9600); + device.baud(115200); interrupt0.fall(&fallInterrupt0); interrupt0.mode(PullUp); interrupt1.fall(&fallInterrupt1); interrupt1.mode(PullUp); - + + while (1) { - wait(10); - if(device.readable()) //checks if ebox sends request + + + if(device.readable()){ //checks if ebox sends request frompc=device.getc(); - pc.printf(&frompc);//writes received data to pc for testing options + - switch(device.getc())//read character and check it + switch(frompc)//read character and check it { case '0': //if character is '0' send key data from touch 0 - sprintf(key_buf,"%d",key_code0); - device.printf(key_buf); + device.printf("%04d",key_code0); break; case '1': //if character is '1' send key data from touch 1 - sprintf(key_buf,"%d",key_code1); - device.printf(key_buf); + device.printf("%04d",key_code1); break; case 'A': //case for string value - sprintf(key_buf,"%d",Strings()); - device.printf(key_buf); + device.printf("%04d",Strings()); break; default: break; } - pc.printf(key_buf);//writes received data to pc for testing options + + } } } \ No newline at end of file
--- a/strings.cpp Wed Nov 30 18:06:50 2011 +0000 +++ b/strings.cpp Wed Dec 14 02:46:16 2011 +0000 @@ -1,11 +1,5 @@ #include "strings.h" -int tempEL = 40; -int tempA = 40; -int tempD = 40; -int tempG = 40; -int tempB = 40; -int tempEH = 40; //inputs for string detection AnalogIn EStringL(p20); @@ -16,48 +10,40 @@ AnalogIn EStringH(p15); //detection range -int bufferVal = 15; +#define bufferVal 0.5 -char output = 0; + char Strings() { - +char toPC=0; +int output[] = {-3,-3,-3,-3,-3,-3}; - - if(abs(EStringL-tempEL) > bufferVal) { - output = (output|0x01); - }else { - output = (output&0xFE); +for(int i=0;i<5;i++){ + if(EStringL > bufferVal) { + output[0] +=1; + } + if(AString > bufferVal) { + output[1] +=1; } - if(abs(AString-tempA) > bufferVal) { - output = (output|0x02); - }else { - output = (output&0xFD); - } - if(abs(DString-tempD) > bufferVal) { - output = (output|0x04); - }else { - output = (output&0xFB); + if(DString > bufferVal) { + output[2] +=1; } - if(abs(GString-tempG) > bufferVal) { - output = (output|0x08); - }else { - output = (output&0xF7); + if(GString > bufferVal) { + output[3]+=1; } - if(abs(BString-tempB) > bufferVal) { - output = (output|0x10); - }else { - output = (output&0xEF); + if(BString > bufferVal) { + output[4]+=1; + } + if(EStringH > bufferVal) { + output[5]+=1; } - if(abs(EStringH-tempEH) > bufferVal) { - output = (output|0x20); - }else { - output = (output&0xDF); - } - wait(0.02); + } + for(int i=0;i<6;i++){ + if(output[i]>0) + toPC+=1<<i; + } - - return output; + return toPC; } \ No newline at end of file