Yan Wang / Mbed 2 deprecated SingleLoop
Committer:
phyllis
Date:
Tue Nov 30 22:13:29 2010 +0000
Revision:
0:7e2659f4155c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
phyllis 0:7e2659f4155c 1 #include "mbed.h"
phyllis 0:7e2659f4155c 2
phyllis 0:7e2659f4155c 3 char* readstring(char* add);
phyllis 0:7e2659f4155c 4 int touchSense( );
phyllis 0:7e2659f4155c 5 char readkey( );
phyllis 0:7e2659f4155c 6
phyllis 0:7e2659f4155c 7 Serial pc(USBTX, USBRX);
phyllis 0:7e2659f4155c 8 AnalogIn input0(p20);
phyllis 0:7e2659f4155c 9 AnalogIn input1(p17);
phyllis 0:7e2659f4155c 10 DigitalIn charger0(p19);
phyllis 0:7e2659f4155c 11 DigitalIn charger1(p16);
phyllis 0:7e2659f4155c 12 DigitalOut ground0(p18);
phyllis 0:7e2659f4155c 13 DigitalOut ground1(p15);
phyllis 0:7e2659f4155c 14
phyllis 0:7e2659f4155c 15 int main() {
phyllis 0:7e2659f4155c 16 char hstr[100];
phyllis 0:7e2659f4155c 17 char ustr[100];
phyllis 0:7e2659f4155c 18 char* sadd = &hstr[0];
phyllis 0:7e2659f4155c 19 char* eadd;
phyllis 0:7e2659f4155c 20 char key;
phyllis 0:7e2659f4155c 21 int len, i, j;
phyllis 0:7e2659f4155c 22 eadd = readstring(sadd);
phyllis 0:7e2659f4155c 23 len = eadd - sadd;
phyllis 0:7e2659f4155c 24 for (i = 0; i <= len; i++)
phyllis 0:7e2659f4155c 25 pc.printf("%c", hstr[i]);
phyllis 0:7e2659f4155c 26 pc.printf("\n");
phyllis 0:7e2659f4155c 27 for (i = 0; i <= len; i++){
phyllis 0:7e2659f4155c 28 while (1){
phyllis 0:7e2659f4155c 29 key = readkey( );
phyllis 0:7e2659f4155c 30 if (key == 'e')
phyllis 0:7e2659f4155c 31 pc.printf("TOUCH ERROR!");
phyllis 0:7e2659f4155c 32 else if ( key == '0' || key == '1')
phyllis 0:7e2659f4155c 33 break;
phyllis 0:7e2659f4155c 34 wait(0.005);
phyllis 0:7e2659f4155c 35 }
phyllis 0:7e2659f4155c 36 pc.printf("%c\n", key);
phyllis 0:7e2659f4155c 37 ustr[i] = key;
phyllis 0:7e2659f4155c 38 }
phyllis 0:7e2659f4155c 39 i = len;
phyllis 0:7e2659f4155c 40 while (1){
phyllis 0:7e2659f4155c 41 for (j = 0; j<= len; j++){
phyllis 0:7e2659f4155c 42 if (hstr[j] != ustr[(i+j+1) % (len+1)])
phyllis 0:7e2659f4155c 43 break;
phyllis 0:7e2659f4155c 44 }
phyllis 0:7e2659f4155c 45 if (j == len+1)
phyllis 0:7e2659f4155c 46 pc.printf("MATCH!");
phyllis 0:7e2659f4155c 47 if ( i == len )
phyllis 0:7e2659f4155c 48 i = 0;
phyllis 0:7e2659f4155c 49 else
phyllis 0:7e2659f4155c 50 i++;
phyllis 0:7e2659f4155c 51 while (1){
phyllis 0:7e2659f4155c 52 key = readkey( );
phyllis 0:7e2659f4155c 53 if (key == 'e')
phyllis 0:7e2659f4155c 54 pc.printf("TOUCH ERROR!");
phyllis 0:7e2659f4155c 55 else if ( key == '0' || key == '1')
phyllis 0:7e2659f4155c 56 break;
phyllis 0:7e2659f4155c 57 wait(0.005);
phyllis 0:7e2659f4155c 58 }
phyllis 0:7e2659f4155c 59 pc.printf("%c\n", key);
phyllis 0:7e2659f4155c 60 ustr[i] = key;
phyllis 0:7e2659f4155c 61 }
phyllis 0:7e2659f4155c 62 }
phyllis 0:7e2659f4155c 63
phyllis 0:7e2659f4155c 64 char* readstring(char* add)
phyllis 0:7e2659f4155c 65 {
phyllis 0:7e2659f4155c 66 char x;
phyllis 0:7e2659f4155c 67 int flag = 0;
phyllis 0:7e2659f4155c 68 while(1){
phyllis 0:7e2659f4155c 69 if (pc.readable()){
phyllis 0:7e2659f4155c 70 x = pc.getc();
phyllis 0:7e2659f4155c 71 if (x=='S' && flag == 0)
phyllis 0:7e2659f4155c 72 flag = 1;
phyllis 0:7e2659f4155c 73 else if (x=='E' && flag==1){
phyllis 0:7e2659f4155c 74 flag = 0;
phyllis 0:7e2659f4155c 75 break;
phyllis 0:7e2659f4155c 76 }
phyllis 0:7e2659f4155c 77 else if (flag==1){
phyllis 0:7e2659f4155c 78 if (x=='1' || x=='0'){
phyllis 0:7e2659f4155c 79 *add = x;
phyllis 0:7e2659f4155c 80 add++;
phyllis 0:7e2659f4155c 81 }
phyllis 0:7e2659f4155c 82 else
phyllis 0:7e2659f4155c 83 pc.printf("HOST ERROR!\n");
phyllis 0:7e2659f4155c 84 }
phyllis 0:7e2659f4155c 85 }
phyllis 0:7e2659f4155c 86 }
phyllis 0:7e2659f4155c 87 return add-1;
phyllis 0:7e2659f4155c 88 }
phyllis 0:7e2659f4155c 89
phyllis 0:7e2659f4155c 90 int touchSense( )
phyllis 0:7e2659f4155c 91 {
phyllis 0:7e2659f4155c 92 float sample0, sample1;
phyllis 0:7e2659f4155c 93 ground0=0;
phyllis 0:7e2659f4155c 94 ground1=0;
phyllis 0:7e2659f4155c 95 charger0.mode(PullUp);
phyllis 0:7e2659f4155c 96 charger1.mode(PullUp);
phyllis 0:7e2659f4155c 97 charger0.mode(PullNone);
phyllis 0:7e2659f4155c 98 charger1.mode(PullNone);
phyllis 0:7e2659f4155c 99 sample0 = input0.read();
phyllis 0:7e2659f4155c 100 sample1 = input1.read();
phyllis 0:7e2659f4155c 101 if (sample0 < 0.3 && sample1 < 0.3)
phyllis 0:7e2659f4155c 102 return 2;
phyllis 0:7e2659f4155c 103 else if (sample0 < 0.3)
phyllis 0:7e2659f4155c 104 return 0;
phyllis 0:7e2659f4155c 105 else if (sample1 < 0.3)
phyllis 0:7e2659f4155c 106 return 1;
phyllis 0:7e2659f4155c 107 else
phyllis 0:7e2659f4155c 108 return -1;
phyllis 0:7e2659f4155c 109 }
phyllis 0:7e2659f4155c 110
phyllis 0:7e2659f4155c 111 char readkey( )
phyllis 0:7e2659f4155c 112 {
phyllis 0:7e2659f4155c 113 int T = -1;
phyllis 0:7e2659f4155c 114 char key = 'n';
phyllis 0:7e2659f4155c 115
phyllis 0:7e2659f4155c 116 T = touchSense();
phyllis 0:7e2659f4155c 117 if (T==0) {
phyllis 0:7e2659f4155c 118 wait(0.005);
phyllis 0:7e2659f4155c 119 T = touchSense();
phyllis 0:7e2659f4155c 120 if (T==0){
phyllis 0:7e2659f4155c 121 while (1){
phyllis 0:7e2659f4155c 122 wait(0.005);
phyllis 0:7e2659f4155c 123 T = touchSense();
phyllis 0:7e2659f4155c 124 if (T==-1){
phyllis 0:7e2659f4155c 125 wait(0.005);
phyllis 0:7e2659f4155c 126 T = touchSense();
phyllis 0:7e2659f4155c 127 if (T==-1){
phyllis 0:7e2659f4155c 128 key = '0';
phyllis 0:7e2659f4155c 129 break;
phyllis 0:7e2659f4155c 130 }
phyllis 0:7e2659f4155c 131 }
phyllis 0:7e2659f4155c 132 else if (T==2)
phyllis 0:7e2659f4155c 133 break;
phyllis 0:7e2659f4155c 134 }
phyllis 0:7e2659f4155c 135 }
phyllis 0:7e2659f4155c 136 }
phyllis 0:7e2659f4155c 137 else if (T==1){
phyllis 0:7e2659f4155c 138 wait(0.005);
phyllis 0:7e2659f4155c 139 T = touchSense();
phyllis 0:7e2659f4155c 140 if (T==1){
phyllis 0:7e2659f4155c 141 while (1){
phyllis 0:7e2659f4155c 142 wait(0.005);
phyllis 0:7e2659f4155c 143 T = touchSense();
phyllis 0:7e2659f4155c 144 if (T==-1){
phyllis 0:7e2659f4155c 145 wait(0.005);
phyllis 0:7e2659f4155c 146 T = touchSense();
phyllis 0:7e2659f4155c 147 if (T==-1){
phyllis 0:7e2659f4155c 148 key = '1';
phyllis 0:7e2659f4155c 149 break;
phyllis 0:7e2659f4155c 150 }
phyllis 0:7e2659f4155c 151 }
phyllis 0:7e2659f4155c 152 else if (T==2)
phyllis 0:7e2659f4155c 153 break;
phyllis 0:7e2659f4155c 154 }
phyllis 0:7e2659f4155c 155 }
phyllis 0:7e2659f4155c 156 }
phyllis 0:7e2659f4155c 157 else if (T==-1)
phyllis 0:7e2659f4155c 158 key = 'n';
phyllis 0:7e2659f4155c 159 if (T==2){
phyllis 0:7e2659f4155c 160 wait(0.005);
phyllis 0:7e2659f4155c 161 T = touchSense();
phyllis 0:7e2659f4155c 162 if (T==2){
phyllis 0:7e2659f4155c 163 while (1){
phyllis 0:7e2659f4155c 164 wait(0.005);
phyllis 0:7e2659f4155c 165 T = touchSense();
phyllis 0:7e2659f4155c 166 if (T==-1){
phyllis 0:7e2659f4155c 167 wait(0.005);
phyllis 0:7e2659f4155c 168 T = touchSense();
phyllis 0:7e2659f4155c 169 if (T==-1){
phyllis 0:7e2659f4155c 170 key = 'e';
phyllis 0:7e2659f4155c 171 break;
phyllis 0:7e2659f4155c 172 }
phyllis 0:7e2659f4155c 173 }
phyllis 0:7e2659f4155c 174 }
phyllis 0:7e2659f4155c 175 }
phyllis 0:7e2659f4155c 176 }
phyllis 0:7e2659f4155c 177 return key;
phyllis 0:7e2659f4155c 178 }