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
diff -r 2fab16867d73 -r 44f0b9d5883b main.cpp
--- 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
diff -r 2fab16867d73 -r 44f0b9d5883b strings.cpp
--- 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