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