Published for Bernard

Dependencies:   DebounceIn USBDevice mbed

Committer:
figlax
Date:
Thu Sep 18 08:48:06 2014 +0000
Revision:
7:0b2dfff14976
Parent:
6:1ff2b519fcc4
Child:
8:6f46e3682189
Bug fix: reinitialize all counters to zero when enter is pushed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
figlax 0:e2860e845207 1 #include "mbed.h"
figlax 1:38a2dd5eed44 2 #include "DebounceIn.h"
figlax 1:38a2dd5eed44 3 //must import cookbook debounce library into project
figlax 0:e2860e845207 4
figlax 1:38a2dd5eed44 5 DigitalOut myled(LED3);
figlax 5:3b729656a1ff 6
figlax 5:3b729656a1ff 7 DigitalOut myled2(LED1);
figlax 5:3b729656a1ff 8
figlax 5:3b729656a1ff 9 DigitalOut myled3(LED2);
figlax 5:3b729656a1ff 10
figlax 0:e2860e845207 11 Serial pc(USBTX, USBRX); // tx, rx
figlax 2:fcc04766c285 12 DigitalIn button(D2);
figlax 1:38a2dd5eed44 13 DigitalIn button2(D3);
figlax 1:38a2dd5eed44 14 DigitalIn button3(D4);
figlax 2:fcc04766c285 15 DigitalIn button4(D5);
figlax 5:3b729656a1ff 16 DigitalIn button5(D12);
figlax 5:3b729656a1ff 17 DigitalIn button6(D7);
figlax 5:3b729656a1ff 18 DigitalIn button7(D8);
figlax 5:3b729656a1ff 19 DigitalIn button8(D9);
figlax 5:3b729656a1ff 20 DebounceIn toggle(D10);
figlax 5:3b729656a1ff 21 DebounceIn enter(D11);
figlax 0:e2860e845207 22
figlax 0:e2860e845207 23 int main() {
figlax 2:fcc04766c285 24
figlax 2:fcc04766c285 25 //initiate button modes to use internal pull up resistor
figlax 0:e2860e845207 26 button.mode(PullUp);
figlax 1:38a2dd5eed44 27 button2.mode(PullUp);
figlax 1:38a2dd5eed44 28 button3.mode(PullUp);
figlax 2:fcc04766c285 29 button4.mode(PullUp);
figlax 2:fcc04766c285 30 button5.mode(PullUp);
figlax 5:3b729656a1ff 31 button6.mode(PullUp);
figlax 5:3b729656a1ff 32 button7.mode(PullUp);
figlax 5:3b729656a1ff 33 button8.mode(PullUp);
figlax 2:fcc04766c285 34 toggle.mode(PullUp);
figlax 1:38a2dd5eed44 35 enter.mode(PullUp);
figlax 0:e2860e845207 36
figlax 1:38a2dd5eed44 37 wait(0.001);
figlax 1:38a2dd5eed44 38
figlax 2:fcc04766c285 39 //initiate counters and other variables
figlax 2:fcc04766c285 40
figlax 2:fcc04766c285 41 int enter_old=1;
figlax 2:fcc04766c285 42 int enter_new;
figlax 2:fcc04766c285 43 int toggle_old=1;
figlax 2:fcc04766c285 44 int toggle_new;
figlax 2:fcc04766c285 45 int button_counter=0;
figlax 2:fcc04766c285 46 int button2_counter=0;
figlax 2:fcc04766c285 47 int button3_counter=0;
figlax 2:fcc04766c285 48 int button4_counter=0;
figlax 2:fcc04766c285 49 int button5_counter=0;
figlax 5:3b729656a1ff 50 int button6_counter=0;
figlax 5:3b729656a1ff 51 int button7_counter=0;
figlax 5:3b729656a1ff 52 int button8_counter=0;
figlax 5:3b729656a1ff 53
figlax 6:1ff2b519fcc4 54 int n=0;
figlax 6:1ff2b519fcc4 55
figlax 5:3b729656a1ff 56 int l=3;
figlax 5:3b729656a1ff 57 int l2=3;
figlax 5:3b729656a1ff 58 int l3=3;
figlax 5:3b729656a1ff 59 int l4=3;
figlax 5:3b729656a1ff 60 int l5=3;
figlax 5:3b729656a1ff 61 int l6=4;
figlax 5:3b729656a1ff 62 int l7=4;
figlax 5:3b729656a1ff 63 int l8=4;
figlax 2:fcc04766c285 64
figlax 1:38a2dd5eed44 65
figlax 5:3b729656a1ff 66 char* s[26] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
figlax 5:3b729656a1ff 67
figlax 5:3b729656a1ff 68 myled=1;
figlax 5:3b729656a1ff 69 myled3=1;
figlax 5:3b729656a1ff 70
figlax 5:3b729656a1ff 71 myled2=0;
figlax 5:3b729656a1ff 72 wait(0.4);
figlax 5:3b729656a1ff 73 myled2=1;
figlax 5:3b729656a1ff 74 wait(0.4);
figlax 5:3b729656a1ff 75 myled2=0;
figlax 5:3b729656a1ff 76 wait(0.4);
figlax 5:3b729656a1ff 77 myled2=1;
figlax 5:3b729656a1ff 78 wait(0.4);
figlax 5:3b729656a1ff 79 myled2=0;
figlax 5:3b729656a1ff 80 wait(0.4);
figlax 5:3b729656a1ff 81 myled2=1;
figlax 5:3b729656a1ff 82 wait(0.4);
figlax 5:3b729656a1ff 83
figlax 1:38a2dd5eed44 84 myled=0;
figlax 5:3b729656a1ff 85 wait(0.4);
figlax 5:3b729656a1ff 86 myled=1;
figlax 0:e2860e845207 87
figlax 5:3b729656a1ff 88
figlax 0:e2860e845207 89 while(1) {
figlax 2:fcc04766c285 90 enter_new = enter.read();
figlax 2:fcc04766c285 91 if((enter_new==0) && (enter_old==1)) {
figlax 5:3b729656a1ff 92 myled3= 0;
figlax 5:3b729656a1ff 93 wait(0.2);
figlax 5:3b729656a1ff 94 myled3= 1;
figlax 6:1ff2b519fcc4 95 n=1;
figlax 2:fcc04766c285 96 if (button.read()==0) {
figlax 5:3b729656a1ff 97 pc.printf("%s", s[button_counter]);
figlax 5:3b729656a1ff 98 button_counter=0;
figlax 6:1ff2b519fcc4 99 n=0;
figlax 2:fcc04766c285 100 }
figlax 2:fcc04766c285 101 if (button2.read()==0) {
figlax 5:3b729656a1ff 102 button2_counter= button2_counter + l;
figlax 5:3b729656a1ff 103 pc.printf("%s", s[button2_counter]);
figlax 5:3b729656a1ff 104 button2_counter=0;
figlax 6:1ff2b519fcc4 105 n=0;
figlax 2:fcc04766c285 106 }
figlax 2:fcc04766c285 107 if (button3.read()==0) {
figlax 5:3b729656a1ff 108 button3_counter= button3_counter + l + l2;
figlax 5:3b729656a1ff 109 pc.printf("%s", s[button3_counter]);
figlax 5:3b729656a1ff 110 button3_counter=0;
figlax 6:1ff2b519fcc4 111 n=0;
figlax 2:fcc04766c285 112 }
figlax 2:fcc04766c285 113 if (button4.read()==0) {
figlax 5:3b729656a1ff 114 button4_counter= button4_counter + l + l2 + l3;
figlax 5:3b729656a1ff 115 pc.printf("%s", s[button4_counter]);
figlax 5:3b729656a1ff 116 button4_counter=0;
figlax 6:1ff2b519fcc4 117 n=0;
figlax 2:fcc04766c285 118 }
figlax 2:fcc04766c285 119 if (button5.read()==0) {
figlax 5:3b729656a1ff 120 button5_counter= button5_counter + l + l2 + l3 + l4;
figlax 5:3b729656a1ff 121 pc.printf("%s", s[button5_counter]);
figlax 5:3b729656a1ff 122 button5_counter=0;
figlax 6:1ff2b519fcc4 123 n=0;
figlax 5:3b729656a1ff 124 }
figlax 5:3b729656a1ff 125 if (button6.read()==0) {
figlax 5:3b729656a1ff 126 button6_counter= button6_counter + l + l2 + l3 + l4 + l5;
figlax 5:3b729656a1ff 127 pc.printf("%s", s[button6_counter]);
figlax 5:3b729656a1ff 128 button6_counter=0;
figlax 6:1ff2b519fcc4 129 n=0;
figlax 2:fcc04766c285 130 }
figlax 5:3b729656a1ff 131 if (button7.read()==0) {
figlax 5:3b729656a1ff 132 button7_counter= button7_counter + l + l2 + l3 + l4 + l5 +l6;
figlax 5:3b729656a1ff 133 pc.printf("%s", s[button7_counter]);
figlax 5:3b729656a1ff 134 button7_counter=0;
figlax 6:1ff2b519fcc4 135 n=0;
figlax 5:3b729656a1ff 136 }
figlax 5:3b729656a1ff 137 if (button8.read()==0) {
figlax 5:3b729656a1ff 138 button8_counter= button8_counter + l + l2 + l3 + l4 + l5 +l6 + l7;
figlax 5:3b729656a1ff 139 pc.printf("%s", s[button8_counter]);
figlax 5:3b729656a1ff 140 button8_counter=0;
figlax 6:1ff2b519fcc4 141 n=0;
figlax 5:3b729656a1ff 142 }
figlax 6:1ff2b519fcc4 143 if (n==1) {
figlax 6:1ff2b519fcc4 144 pc.printf(" ");
figlax 7:0b2dfff14976 145 n=0;
figlax 6:1ff2b519fcc4 146 }
figlax 7:0b2dfff14976 147 button_counter=0;
figlax 7:0b2dfff14976 148 button2_counter=0;
figlax 7:0b2dfff14976 149 button3_counter=0;
figlax 7:0b2dfff14976 150 button4_counter=0;
figlax 7:0b2dfff14976 151 button5_counter=0;
figlax 7:0b2dfff14976 152 button6_counter=0;
figlax 7:0b2dfff14976 153 button7_counter=0;
figlax 7:0b2dfff14976 154 button8_counter=0;
figlax 7:0b2dfff14976 155
figlax 2:fcc04766c285 156
figlax 1:38a2dd5eed44 157 }
figlax 2:fcc04766c285 158 enter_old= enter_new;
figlax 1:38a2dd5eed44 159
figlax 2:fcc04766c285 160
figlax 3:4a263f3d8b0b 161 toggle_new = toggle.read();
figlax 3:4a263f3d8b0b 162 if ((toggle_new==0) && (toggle_old==1)) {
figlax 5:3b729656a1ff 163
figlax 5:3b729656a1ff 164 myled= 0;
figlax 5:3b729656a1ff 165 wait(0.2);
figlax 5:3b729656a1ff 166 myled= 1;
figlax 5:3b729656a1ff 167
figlax 3:4a263f3d8b0b 168 if (button.read()==0) {
figlax 3:4a263f3d8b0b 169 button_counter= button_counter + 1;
figlax 3:4a263f3d8b0b 170 button2_counter=0;
figlax 3:4a263f3d8b0b 171 button3_counter=0;
figlax 3:4a263f3d8b0b 172 button4_counter=0;
figlax 3:4a263f3d8b0b 173 button5_counter=0;
figlax 5:3b729656a1ff 174 button6_counter=0;
figlax 5:3b729656a1ff 175 button7_counter=0;
figlax 5:3b729656a1ff 176 button8_counter=0;
figlax 5:3b729656a1ff 177 if (button_counter==(l)) {
figlax 5:3b729656a1ff 178 button_counter=0;
figlax 5:3b729656a1ff 179 }
figlax 3:4a263f3d8b0b 180 }
figlax 3:4a263f3d8b0b 181 if (button2.read()==0) {
figlax 3:4a263f3d8b0b 182 button_counter= 0;
figlax 3:4a263f3d8b0b 183 button2_counter= button2_counter + 1;
figlax 3:4a263f3d8b0b 184 button3_counter=0;
figlax 3:4a263f3d8b0b 185 button4_counter=0;
figlax 3:4a263f3d8b0b 186 button5_counter=0;
figlax 5:3b729656a1ff 187 button6_counter=0;
figlax 5:3b729656a1ff 188 button7_counter=0;
figlax 5:3b729656a1ff 189 button8_counter=0;
figlax 5:3b729656a1ff 190 if (button2_counter==(l2)) {
figlax 5:3b729656a1ff 191 button2_counter=0;
figlax 5:3b729656a1ff 192 }
figlax 3:4a263f3d8b0b 193 }
figlax 3:4a263f3d8b0b 194 if (button3.read()==0) {
figlax 3:4a263f3d8b0b 195 button_counter= 0;
figlax 3:4a263f3d8b0b 196 button2_counter=0;
figlax 3:4a263f3d8b0b 197 button3_counter= button3_counter + 1;
figlax 3:4a263f3d8b0b 198 button4_counter=0;
figlax 3:4a263f3d8b0b 199 button5_counter=0;
figlax 5:3b729656a1ff 200 button6_counter=0;
figlax 5:3b729656a1ff 201 button7_counter=0;
figlax 5:3b729656a1ff 202 button8_counter=0;
figlax 5:3b729656a1ff 203 if (button3_counter==(l3)) {
figlax 5:3b729656a1ff 204 button3_counter=0;
figlax 5:3b729656a1ff 205 }
figlax 3:4a263f3d8b0b 206 }
figlax 3:4a263f3d8b0b 207 if (button4.read()==0) {
figlax 3:4a263f3d8b0b 208 button_counter= 0;
figlax 3:4a263f3d8b0b 209 button2_counter=0;
figlax 3:4a263f3d8b0b 210 button3_counter=0;
figlax 3:4a263f3d8b0b 211 button4_counter= button4_counter + 1;
figlax 3:4a263f3d8b0b 212 button5_counter=0;
figlax 5:3b729656a1ff 213 button6_counter=0;
figlax 5:3b729656a1ff 214 button7_counter=0;
figlax 5:3b729656a1ff 215 button8_counter=0;
figlax 5:3b729656a1ff 216 if (button4_counter==(l4)) {
figlax 5:3b729656a1ff 217 button4_counter=0;
figlax 5:3b729656a1ff 218 }
figlax 3:4a263f3d8b0b 219 }
figlax 3:4a263f3d8b0b 220 if (button5.read()==0) {
figlax 3:4a263f3d8b0b 221 button_counter= 0;
figlax 3:4a263f3d8b0b 222 button2_counter=0;
figlax 3:4a263f3d8b0b 223 button3_counter=0;
figlax 3:4a263f3d8b0b 224 button4_counter=0;
figlax 3:4a263f3d8b0b 225 button5_counter= button5_counter + 1;
figlax 5:3b729656a1ff 226 button6_counter=0;
figlax 5:3b729656a1ff 227 button7_counter=0;
figlax 5:3b729656a1ff 228 button8_counter=0;
figlax 5:3b729656a1ff 229 if (button5_counter==(l5)) {
figlax 5:3b729656a1ff 230 button5_counter=0;
figlax 5:3b729656a1ff 231 }
figlax 3:4a263f3d8b0b 232 }
figlax 5:3b729656a1ff 233 if (button6.read()==0) {
figlax 5:3b729656a1ff 234 button_counter= 0;
figlax 5:3b729656a1ff 235 button2_counter=0;
figlax 5:3b729656a1ff 236 button3_counter=0;
figlax 5:3b729656a1ff 237 button4_counter=0;
figlax 5:3b729656a1ff 238 button5_counter=0;
figlax 5:3b729656a1ff 239 button6_counter= button6_counter + 1;
figlax 5:3b729656a1ff 240 button7_counter=0;
figlax 5:3b729656a1ff 241 button8_counter=0;
figlax 5:3b729656a1ff 242 if (button6_counter==(l6)) {
figlax 5:3b729656a1ff 243 button6_counter=0;
figlax 5:3b729656a1ff 244 }
figlax 5:3b729656a1ff 245 }
figlax 5:3b729656a1ff 246 if (button7.read()==0) {
figlax 5:3b729656a1ff 247 button_counter= 0;
figlax 5:3b729656a1ff 248 button2_counter=0;
figlax 5:3b729656a1ff 249 button3_counter=0;
figlax 5:3b729656a1ff 250 button4_counter=0;
figlax 5:3b729656a1ff 251 button5_counter=0;
figlax 5:3b729656a1ff 252 button6_counter=0;
figlax 5:3b729656a1ff 253 button7_counter= button7_counter + 1;
figlax 5:3b729656a1ff 254 button8_counter=0;
figlax 5:3b729656a1ff 255 if (button7_counter==(l7)) {
figlax 5:3b729656a1ff 256 button7_counter=0;
figlax 5:3b729656a1ff 257 }
figlax 5:3b729656a1ff 258 }
figlax 5:3b729656a1ff 259 if (button8.read()==0) {
figlax 5:3b729656a1ff 260 button_counter= 0;
figlax 5:3b729656a1ff 261 button2_counter=0;
figlax 5:3b729656a1ff 262 button3_counter=0;
figlax 5:3b729656a1ff 263 button4_counter=0;
figlax 5:3b729656a1ff 264 button5_counter=0;
figlax 5:3b729656a1ff 265 button6_counter=0;
figlax 5:3b729656a1ff 266 button7_counter=0;
figlax 5:3b729656a1ff 267 button8_counter=button8_counter + 1;
figlax 5:3b729656a1ff 268 if (button8_counter==(l8)) {
figlax 5:3b729656a1ff 269 button8_counter=0;
figlax 5:3b729656a1ff 270 }
figlax 5:3b729656a1ff 271 }
figlax 3:4a263f3d8b0b 272 }
figlax 3:4a263f3d8b0b 273 toggle_old= toggle_new;
figlax 3:4a263f3d8b0b 274
figlax 3:4a263f3d8b0b 275
figlax 3:4a263f3d8b0b 276
figlax 2:fcc04766c285 277
figlax 2:fcc04766c285 278
figlax 2:fcc04766c285 279
figlax 0:e2860e845207 280 }
figlax 0:e2860e845207 281 }