Qingtao Li / Mbed 2 deprecated SingleLoop
Committer:
liqingtaobkd
Date:
Wed Dec 01 01:03:15 2010 +0000
Revision:
0:efd40e2f873e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liqingtaobkd 0:efd40e2f873e 1 #include "mbed.h"
liqingtaobkd 0:efd40e2f873e 2
liqingtaobkd 0:efd40e2f873e 3 #define numsamples 1
liqingtaobkd 0:efd40e2f873e 4 int touchSense1(void);
liqingtaobkd 0:efd40e2f873e 5 int touchSense2(void);
liqingtaobkd 0:efd40e2f873e 6 int comparestr(int x,int y,char a[],char b[]);
liqingtaobkd 0:efd40e2f873e 7 void getstring(void);
liqingtaobkd 0:efd40e2f873e 8
liqingtaobkd 0:efd40e2f873e 9 DigitalOut myled1(LED1);
liqingtaobkd 0:efd40e2f873e 10 DigitalOut myled2(LED2);
liqingtaobkd 0:efd40e2f873e 11 AnalogIn input1(p20);
liqingtaobkd 0:efd40e2f873e 12 AnalogIn input2(p15);
liqingtaobkd 0:efd40e2f873e 13 DigitalIn charger1(p19);
liqingtaobkd 0:efd40e2f873e 14 DigitalIn charger2(p16);
liqingtaobkd 0:efd40e2f873e 15 DigitalOut ground1(p18);
liqingtaobkd 0:efd40e2f873e 16 DigitalOut ground2(p17);
liqingtaobkd 0:efd40e2f873e 17 Serial pc(USBTX, USBRX); // tx, rx
liqingtaobkd 0:efd40e2f873e 18
liqingtaobkd 0:efd40e2f873e 19 static int j;
liqingtaobkd 0:efd40e2f873e 20 static char str[50];
liqingtaobkd 0:efd40e2f873e 21
liqingtaobkd 0:efd40e2f873e 22 int main() {
liqingtaobkd 0:efd40e2f873e 23 pc.printf("Please input the trigger string (start with S and end with E):\r\n");
liqingtaobkd 0:efd40e2f873e 24 getstring();
liqingtaobkd 0:efd40e2f873e 25 pc.printf("Waiting for human input.\r\n");
liqingtaobkd 0:efd40e2f873e 26 int i=0,k=0;
liqingtaobkd 0:efd40e2f873e 27 char str1[50];
liqingtaobkd 0:efd40e2f873e 28 int match=0;
liqingtaobkd 0:efd40e2f873e 29 while (1) {
liqingtaobkd 0:efd40e2f873e 30 if (pc.readable()) {
liqingtaobkd 0:efd40e2f873e 31 getstring();
liqingtaobkd 0:efd40e2f873e 32 }
liqingtaobkd 0:efd40e2f873e 33 if (touchSense1()) {
liqingtaobkd 0:efd40e2f873e 34 myled1 = 1;
liqingtaobkd 0:efd40e2f873e 35 } else {
liqingtaobkd 0:efd40e2f873e 36 myled1 = 0;
liqingtaobkd 0:efd40e2f873e 37 }
liqingtaobkd 0:efd40e2f873e 38 if (touchSense2()) {
liqingtaobkd 0:efd40e2f873e 39 myled2 = 1;
liqingtaobkd 0:efd40e2f873e 40 } else {
liqingtaobkd 0:efd40e2f873e 41 myled2 = 0;
liqingtaobkd 0:efd40e2f873e 42 }
liqingtaobkd 0:efd40e2f873e 43 switch (i) {
liqingtaobkd 0:efd40e2f873e 44 case 0:
liqingtaobkd 0:efd40e2f873e 45 if (myled1&myled2) {
liqingtaobkd 0:efd40e2f873e 46 pc.printf("TOUCH ERROR\r\n");
liqingtaobkd 0:efd40e2f873e 47 i=1;
liqingtaobkd 0:efd40e2f873e 48 }
liqingtaobkd 0:efd40e2f873e 49 if (myled1==1&myled2==0) {
liqingtaobkd 0:efd40e2f873e 50 pc.printf("1");
liqingtaobkd 0:efd40e2f873e 51 i=1;
liqingtaobkd 0:efd40e2f873e 52 str1[k]='1';
liqingtaobkd 0:efd40e2f873e 53 match=0;
liqingtaobkd 0:efd40e2f873e 54 k++;
liqingtaobkd 0:efd40e2f873e 55 }
liqingtaobkd 0:efd40e2f873e 56 if (myled2==1&myled1==0) {
liqingtaobkd 0:efd40e2f873e 57 pc.printf("0");
liqingtaobkd 0:efd40e2f873e 58 i=1;
liqingtaobkd 0:efd40e2f873e 59 str1[k]='0';
liqingtaobkd 0:efd40e2f873e 60 match=0;
liqingtaobkd 0:efd40e2f873e 61 k++;
liqingtaobkd 0:efd40e2f873e 62 }
liqingtaobkd 0:efd40e2f873e 63 case 1:
liqingtaobkd 0:efd40e2f873e 64 if ((myled1==0)&(myled2==0)) {
liqingtaobkd 0:efd40e2f873e 65 i=0;
liqingtaobkd 0:efd40e2f873e 66 }
liqingtaobkd 0:efd40e2f873e 67 }
liqingtaobkd 0:efd40e2f873e 68 int x,y;
liqingtaobkd 0:efd40e2f873e 69 x=k-1,y=j;
liqingtaobkd 0:efd40e2f873e 70 if (match==0) {
liqingtaobkd 0:efd40e2f873e 71 match=comparestr(x,y,str,str1);
liqingtaobkd 0:efd40e2f873e 72 if (match==1) pc.printf("\r\nMATCH\r\n");
liqingtaobkd 0:efd40e2f873e 73 }
liqingtaobkd 0:efd40e2f873e 74 wait (0.05);
liqingtaobkd 0:efd40e2f873e 75 }
liqingtaobkd 0:efd40e2f873e 76 }
liqingtaobkd 0:efd40e2f873e 77
liqingtaobkd 0:efd40e2f873e 78 void getstring(void) {
liqingtaobkd 0:efd40e2f873e 79 char a;
liqingtaobkd 0:efd40e2f873e 80 j=0;
liqingtaobkd 0:efd40e2f873e 81 X:
liqingtaobkd 0:efd40e2f873e 82 while (1) {
liqingtaobkd 0:efd40e2f873e 83 a=pc.getc();
liqingtaobkd 0:efd40e2f873e 84 pc.printf("%c",a);
liqingtaobkd 0:efd40e2f873e 85 if (a=='S') break;
liqingtaobkd 0:efd40e2f873e 86 else {
liqingtaobkd 0:efd40e2f873e 87 pc.printf("\r\nHOST ERROR,TRY AGAIN\r\n");
liqingtaobkd 0:efd40e2f873e 88 continue;
liqingtaobkd 0:efd40e2f873e 89 }
liqingtaobkd 0:efd40e2f873e 90 }
liqingtaobkd 0:efd40e2f873e 91 while (1) {
liqingtaobkd 0:efd40e2f873e 92 a=pc.getc();
liqingtaobkd 0:efd40e2f873e 93 pc.printf("%c",a);
liqingtaobkd 0:efd40e2f873e 94 if (a=='E') {
liqingtaobkd 0:efd40e2f873e 95 pc.printf("\r\n");
liqingtaobkd 0:efd40e2f873e 96 break;
liqingtaobkd 0:efd40e2f873e 97 } else if (a=='0'|a=='1') {
liqingtaobkd 0:efd40e2f873e 98 str[j]=a;
liqingtaobkd 0:efd40e2f873e 99 j++;
liqingtaobkd 0:efd40e2f873e 100 } else if (a==' ') continue;
liqingtaobkd 0:efd40e2f873e 101 else {
liqingtaobkd 0:efd40e2f873e 102 pc.printf("\r\nHOST ERROR,TRY AGAIN\r\n");
liqingtaobkd 0:efd40e2f873e 103 goto X;
liqingtaobkd 0:efd40e2f873e 104 }
liqingtaobkd 0:efd40e2f873e 105 }
liqingtaobkd 0:efd40e2f873e 106 j=j-1;
liqingtaobkd 0:efd40e2f873e 107 }
liqingtaobkd 0:efd40e2f873e 108 int touchSense1(void) {
liqingtaobkd 0:efd40e2f873e 109 float sample;
liqingtaobkd 0:efd40e2f873e 110 ground1 = 0;
liqingtaobkd 0:efd40e2f873e 111 charger1.mode(PullUp);
liqingtaobkd 0:efd40e2f873e 112 charger1.mode(PullNone);
liqingtaobkd 0:efd40e2f873e 113 sample=input1.read();
liqingtaobkd 0:efd40e2f873e 114 if (sample < 0.3) {
liqingtaobkd 0:efd40e2f873e 115 return 1;
liqingtaobkd 0:efd40e2f873e 116 } else {
liqingtaobkd 0:efd40e2f873e 117 return 0;
liqingtaobkd 0:efd40e2f873e 118 }
liqingtaobkd 0:efd40e2f873e 119 }
liqingtaobkd 0:efd40e2f873e 120
liqingtaobkd 0:efd40e2f873e 121 int touchSense2(void) {
liqingtaobkd 0:efd40e2f873e 122 float sample;
liqingtaobkd 0:efd40e2f873e 123 ground2 = 0;
liqingtaobkd 0:efd40e2f873e 124 charger2.mode(PullUp);
liqingtaobkd 0:efd40e2f873e 125 charger2.mode(PullNone);
liqingtaobkd 0:efd40e2f873e 126 sample=input2.read();
liqingtaobkd 0:efd40e2f873e 127 if (sample < 0.3) {
liqingtaobkd 0:efd40e2f873e 128 return 1;
liqingtaobkd 0:efd40e2f873e 129 } else {
liqingtaobkd 0:efd40e2f873e 130 return 0;
liqingtaobkd 0:efd40e2f873e 131 }
liqingtaobkd 0:efd40e2f873e 132 }
liqingtaobkd 0:efd40e2f873e 133
liqingtaobkd 0:efd40e2f873e 134 int comparestr(int x,int y,char a[],char b[]) {
liqingtaobkd 0:efd40e2f873e 135 while (y>=0) {
liqingtaobkd 0:efd40e2f873e 136 if (a[y]==b[x]) {
liqingtaobkd 0:efd40e2f873e 137 x--;
liqingtaobkd 0:efd40e2f873e 138 y--;
liqingtaobkd 0:efd40e2f873e 139 } else goto A;
liqingtaobkd 0:efd40e2f873e 140 }
liqingtaobkd 0:efd40e2f873e 141 return 1;
liqingtaobkd 0:efd40e2f873e 142 A:
liqingtaobkd 0:efd40e2f873e 143 return 0;
liqingtaobkd 0:efd40e2f873e 144 }