Dependencies:   mbed

Files at this revision

API Documentation at this revision

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