Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:efd40e2f873e, 2010-12-01 (annotated)
- Committer:
- liqingtaobkd
- Date:
- Wed Dec 01 01:03:15 2010 +0000
- Revision:
- 0:efd40e2f873e
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |