Homework2_2ForeBack_YuwenSun

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
sun831011
Date:
Tue Nov 30 22:18:16 2010 +0000
Commit message:

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 257ce4f4805b main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 30 22:18:16 2010 +0000
@@ -0,0 +1,179 @@
+#include "mbed.h"
+
+#define numsamples 1
+int touchSense1(void);  //function for the button 1
+
+DigitalOut myled1(LED1);
+AnalogIn input1(p20);
+DigitalIn charger1(p19);
+DigitalOut ground1(p18);
+Serial pc(USBTX, USBRX); // tx, rx
+
+int touchSense2(void);  //function for the button 2
+
+DigitalOut myled2(LED4);
+AnalogIn input2(p15);
+DigitalIn charger2(p16);
+DigitalOut ground2(p17);
+
+int getc();
+void setcode();
+     
+
+char incode[10];
+char strcode[10];
+char matcode[10];
+char temp;
+int codelen = 1;
+int matlen;
+int i=0;
+int j=0;
+int flag1 = 0;
+int flag2 = 0;
+int failflag = 0;
+
+int main() {
+
+  for (i=0;i<10;i++){   //initial the char array
+    incode[i] = 'a';    
+    strcode[i] = 'a';
+  }
+
+  pc.attach(&setcode, Serial::RxIrq);
+
+  while(1) {
+    
+    
+   if (touchSense1()) { 
+       wait (0.005);    //wait 5ms for checking press
+       if (touchSense1()){
+            myled1 = 1;
+            if (flag1 == 0){
+                flag1 =1;   //flag1 for symbol press
+                pc.printf("1");
+                matcode[matlen] = '1'; //record for compare
+                matlen ++;
+             }
+        }
+         
+    } else {
+        wait(0.005);  //wait 5ms confirm release
+        if (touchSense1()==0){
+            myled1 = 0;
+            flag1 = 0; //clear flag
+        }
+    }
+    
+ 
+    if (touchSense2()) { //samiliar as above 1
+       wait (0.005);
+       if (touchSense2()){
+            myled2 = 1;
+            if (flag2 == 0){
+                flag2 =1;
+                pc.printf("0");
+                matcode[matlen] = '0';
+                matlen ++;
+             }
+        }
+         
+    } else {
+        wait(0.005);
+        if (touchSense2()==0){
+            myled2 = 0;
+            flag2 = 0;
+        }
+    }
+    
+    if (flag1 == 1 && flag2 == 1){ //detect press both button
+        pc.printf("\nError, please don't touch both!!");
+        //break;
+    }
+    
+    if (matlen >= codelen){ //check input length match the set up
+        for (i=0;i<codelen;i++){
+            if (matcode[i] != strcode[i])
+                failflag = 1; //flag for symbol not match
+        }
+        
+        if (failflag == 0){
+            pc.printf("\n Congratulations! Code is matched!!\n");
+            matlen = 0;
+            
+        }
+        
+        else{
+            pc.printf("\nSorry, the code is wrong, please input again!!\n");
+            failflag = 0;
+            matlen = 0;
+        }
+        
+    }
+    
+   
+  }
+}
+
+int touchSense1(void) //function for touch sensor
+{
+    float sample;
+    ground1 = 0;
+    charger1.mode(PullUp);
+    charger1.mode(PullNone);
+    sample=input1.read();
+    if (sample < 0.3) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
+int touchSense2(void)
+{
+    float sample;
+    ground2 = 0;
+    charger2.mode(PullUp);
+    charger2.mode(PullNone);
+    sample=input2.read();
+    if (sample < 0.3) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+void setcode(){
+  i=0;
+  j=0;
+  pc.printf("\nPlease inpunt the code:\n");
+  while ((temp = pc.getc())!= 'E') {    //getchar
+    pc.printf("%c",temp);
+    incode[i] = temp;    //put the original char in incode      
+    i++;
+  }    
+  
+  incode[i] = 'E'; //put "E" last as the end symbol
+  pc.printf("%c",temp);
+  pc.printf("\nThanks for the string, your input is\n");
+  
+  for (i=0;i<10;i++){   //extract 0/1 from incode to strcode
+    if (incode[i] == 'E')
+        break;
+    else{
+        if (incode[i] == '0' || incode[i] == '1'){
+            strcode[j] = incode[i];
+            j++;
+        }
+    }
+        
+  }
+  
+  codelen = j;
+  
+  for (j=0;j<codelen;j++)   //display the configuration
+    pc.printf("%c",strcode[j]);
+  pc.printf("\n");
+  
+  matlen = 0;  
+  
+  pc.printf("\nPlease input the code:");
+}
\ No newline at end of file
diff -r 000000000000 -r 257ce4f4805b mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Nov 30 22:18:16 2010 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e