zavrsni ricci
Dependencies: mbed
main.cpp@0:427833cc260e, 2018-11-09 (annotated)
- Committer:
- marcoricci
- Date:
- Fri Nov 09 16:29:02 2018 +0000
- Revision:
- 0:427833cc260e
final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcoricci | 0:427833cc260e | 1 | //Reads input through the ADC, and transfers to PC terminal |
marcoricci | 0:427833cc260e | 2 | #include "mbed.h" |
marcoricci | 0:427833cc260e | 3 | #include "types.h" |
marcoricci | 0:427833cc260e | 4 | #include "memoria.h" |
marcoricci | 0:427833cc260e | 5 | #include "Keyb2.h" |
marcoricci | 0:427833cc260e | 6 | |
marcoricci | 0:427833cc260e | 7 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 8 | // * assign HW * |
marcoricci | 0:427833cc260e | 9 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 10 | BusOut Seg1( p5, p6, p7, p8, p9,p10,p11); // ABCDEFG |
marcoricci | 0:427833cc260e | 11 | BusOut Seg2(p12,p13,p14,p15,p16,p17,p18); // ABCDEFG |
marcoricci | 0:427833cc260e | 12 | BusOut Seg3(p24,p25,p26,p27,p28,p29,p30); // ABCDEFG |
marcoricci | 0:427833cc260e | 13 | DigitalOut DG (p19); // segment A |
marcoricci | 0:427833cc260e | 14 | PwmOut buzzer(p21); |
marcoricci | 0:427833cc260e | 15 | DigitalOut led1(LED1); // digital out to p5 |
marcoricci | 0:427833cc260e | 16 | DigitalOut led2(LED2); // digital out to p5 |
marcoricci | 0:427833cc260e | 17 | DigitalOut led3(LED3); // digital out to p5 |
marcoricci | 0:427833cc260e | 18 | DigitalOut led4(LED4); // digital out to p5 |
marcoricci | 0:427833cc260e | 19 | InterruptIn buttonSEL(p22); // Interrupt on digital pushbutton |
marcoricci | 0:427833cc260e | 20 | InterruptIn buttonOK(p23); // Interrupt on digital pushbutton |
marcoricci | 0:427833cc260e | 21 | Timer debounceSEL; // define debounce timer |
marcoricci | 0:427833cc260e | 22 | Timer debounceOK; // define debounce timer |
marcoricci | 0:427833cc260e | 23 | Timer TimVis; // time to visual |
marcoricci | 0:427833cc260e | 24 | Timer StartUP; // counter up |
marcoricci | 0:427833cc260e | 25 | Timer StartDW; // counter DW |
marcoricci | 0:427833cc260e | 26 | AnalogIn Ain(p20); |
marcoricci | 0:427833cc260e | 27 | |
marcoricci | 0:427833cc260e | 28 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 29 | // * declare prototypes * |
marcoricci | 0:427833cc260e | 30 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 31 | void Voltmetro (void); |
marcoricci | 0:427833cc260e | 32 | void CounterUP (void); |
marcoricci | 0:427833cc260e | 33 | void CounterDW (void); |
marcoricci | 0:427833cc260e | 34 | void Visual7(int counter); |
marcoricci | 0:427833cc260e | 35 | int SetCounterDW (int countrDW); |
marcoricci | 0:427833cc260e | 36 | void CounterDWend(void); |
marcoricci | 0:427833cc260e | 37 | void Menu1(void); |
marcoricci | 0:427833cc260e | 38 | void Menu2(void); |
marcoricci | 0:427833cc260e | 39 | void Menu3(void); |
marcoricci | 0:427833cc260e | 40 | void BuzzerSEL (void); |
marcoricci | 0:427833cc260e | 41 | void BuzzerOK (void); |
marcoricci | 0:427833cc260e | 42 | |
marcoricci | 0:427833cc260e | 43 | |
marcoricci | 0:427833cc260e | 44 | |
marcoricci | 0:427833cc260e | 45 | int main() |
marcoricci | 0:427833cc260e | 46 | { |
marcoricci | 0:427833cc260e | 47 | |
marcoricci | 0:427833cc260e | 48 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 49 | // * init HW * |
marcoricci | 0:427833cc260e | 50 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 51 | debounceOK.start(); |
marcoricci | 0:427833cc260e | 52 | buttonOK.rise(&KeybOk); // attach the address of the toggle |
marcoricci | 0:427833cc260e | 53 | buttonOK.mode(PullUp); |
marcoricci | 0:427833cc260e | 54 | debounceSEL.start(); |
marcoricci | 0:427833cc260e | 55 | buttonSEL.rise(&KeybSEL); // attach the address of the toggle |
marcoricci | 0:427833cc260e | 56 | buttonSEL.mode(PullUp); |
marcoricci | 0:427833cc260e | 57 | TimVis.start(); |
marcoricci | 0:427833cc260e | 58 | StartUP.start(); |
marcoricci | 0:427833cc260e | 59 | StartDW.start(); |
marcoricci | 0:427833cc260e | 60 | ExKeyPress = KEYNULL; |
marcoricci | 0:427833cc260e | 61 | KeyPress = KEYNULL; |
marcoricci | 0:427833cc260e | 62 | Level = LEVEL1; |
marcoricci | 0:427833cc260e | 63 | stateMbd = ST_INIT; |
marcoricci | 0:427833cc260e | 64 | |
marcoricci | 0:427833cc260e | 65 | do |
marcoricci | 0:427833cc260e | 66 | { // infinite loop |
marcoricci | 0:427833cc260e | 67 | |
marcoricci | 0:427833cc260e | 68 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 69 | // * state mbed * |
marcoricci | 0:427833cc260e | 70 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 71 | if (TimVis.read_ms() >= 200) |
marcoricci | 0:427833cc260e | 72 | { |
marcoricci | 0:427833cc260e | 73 | TimVis.reset(); // restart timer |
marcoricci | 0:427833cc260e | 74 | |
marcoricci | 0:427833cc260e | 75 | switch (stateMbd) { |
marcoricci | 0:427833cc260e | 76 | case ST_INIT: |
marcoricci | 0:427833cc260e | 77 | stateMbd = ST_M1; |
marcoricci | 0:427833cc260e | 78 | break; |
marcoricci | 0:427833cc260e | 79 | case ST_M1: |
marcoricci | 0:427833cc260e | 80 | Menu1(); |
marcoricci | 0:427833cc260e | 81 | break; |
marcoricci | 0:427833cc260e | 82 | case ST_M2: |
marcoricci | 0:427833cc260e | 83 | Menu2(); |
marcoricci | 0:427833cc260e | 84 | break; |
marcoricci | 0:427833cc260e | 85 | case ST_M3: |
marcoricci | 0:427833cc260e | 86 | Menu3(); |
marcoricci | 0:427833cc260e | 87 | break; |
marcoricci | 0:427833cc260e | 88 | } |
marcoricci | 0:427833cc260e | 89 | } |
marcoricci | 0:427833cc260e | 90 | |
marcoricci | 0:427833cc260e | 91 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 92 | // * read keyboard --> move to state machine * |
marcoricci | 0:427833cc260e | 93 | // * -------------------------------------------- * |
marcoricci | 0:427833cc260e | 94 | if (Keyboard() != KEYNULL) { |
marcoricci | 0:427833cc260e | 95 | |
marcoricci | 0:427833cc260e | 96 | switch (KeyPress) { |
marcoricci | 0:427833cc260e | 97 | case KEYSEL: |
marcoricci | 0:427833cc260e | 98 | if (Level == LEVEL1) { |
marcoricci | 0:427833cc260e | 99 | if (stateMbd < (ST_MMAX-1)) stateMbd++; |
marcoricci | 0:427833cc260e | 100 | else stateMbd = (ST_INIT+1); |
marcoricci | 0:427833cc260e | 101 | } |
marcoricci | 0:427833cc260e | 102 | break; |
marcoricci | 0:427833cc260e | 103 | case KEYOK: |
marcoricci | 0:427833cc260e | 104 | if (Level < LEVEL6) Level++; else Level = LEVEL1; |
marcoricci | 0:427833cc260e | 105 | break; |
marcoricci | 0:427833cc260e | 106 | } |
marcoricci | 0:427833cc260e | 107 | } |
marcoricci | 0:427833cc260e | 108 | } |
marcoricci | 0:427833cc260e | 109 | while (1); |
marcoricci | 0:427833cc260e | 110 | |
marcoricci | 0:427833cc260e | 111 | } |
marcoricci | 0:427833cc260e | 112 | |
marcoricci | 0:427833cc260e | 113 | |
marcoricci | 0:427833cc260e | 114 | |
marcoricci | 0:427833cc260e | 115 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 116 | // * Menu * |
marcoricci | 0:427833cc260e | 117 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 118 | void Menu1(void) |
marcoricci | 0:427833cc260e | 119 | { |
marcoricci | 0:427833cc260e | 120 | switch (Level) { |
marcoricci | 0:427833cc260e | 121 | case LEVEL1: |
marcoricci | 0:427833cc260e | 122 | Seg1 = tabFunc[0U]; |
marcoricci | 0:427833cc260e | 123 | DG = 0u; |
marcoricci | 0:427833cc260e | 124 | Seg2 = tabSeg[0U]; |
marcoricci | 0:427833cc260e | 125 | Seg3 = tabSeg[1U]; |
marcoricci | 0:427833cc260e | 126 | break; |
marcoricci | 0:427833cc260e | 127 | case LEVEL2: |
marcoricci | 0:427833cc260e | 128 | Voltmetro(); |
marcoricci | 0:427833cc260e | 129 | break; |
marcoricci | 0:427833cc260e | 130 | case LEVEL3: |
marcoricci | 0:427833cc260e | 131 | Level = LEVEL1; |
marcoricci | 0:427833cc260e | 132 | break; |
marcoricci | 0:427833cc260e | 133 | } |
marcoricci | 0:427833cc260e | 134 | } |
marcoricci | 0:427833cc260e | 135 | |
marcoricci | 0:427833cc260e | 136 | void Menu2(void) |
marcoricci | 0:427833cc260e | 137 | { |
marcoricci | 0:427833cc260e | 138 | switch (Level) { |
marcoricci | 0:427833cc260e | 139 | case LEVEL1: |
marcoricci | 0:427833cc260e | 140 | Seg1 = tabFunc[0U]; |
marcoricci | 0:427833cc260e | 141 | DG = 0u; |
marcoricci | 0:427833cc260e | 142 | Seg2 = tabSeg[0U]; |
marcoricci | 0:427833cc260e | 143 | Seg3 = tabSeg[2U]; |
marcoricci | 0:427833cc260e | 144 | break; |
marcoricci | 0:427833cc260e | 145 | case LEVEL2: |
marcoricci | 0:427833cc260e | 146 | DG = 0u; |
marcoricci | 0:427833cc260e | 147 | Seg1 = tabFunc[1U]; |
marcoricci | 0:427833cc260e | 148 | Seg2 = tabFunc[2U]; |
marcoricci | 0:427833cc260e | 149 | Seg3 = tabFunc[3U]; |
marcoricci | 0:427833cc260e | 150 | break; |
marcoricci | 0:427833cc260e | 151 | case LEVEL3: |
marcoricci | 0:427833cc260e | 152 | StartUP.reset(); |
marcoricci | 0:427833cc260e | 153 | CntUp = 0U; |
marcoricci | 0:427833cc260e | 154 | Level = LEVEL4; |
marcoricci | 0:427833cc260e | 155 | break; |
marcoricci | 0:427833cc260e | 156 | case LEVEL4: |
marcoricci | 0:427833cc260e | 157 | CounterUP(); |
marcoricci | 0:427833cc260e | 158 | break; |
marcoricci | 0:427833cc260e | 159 | case LEVEL5: |
marcoricci | 0:427833cc260e | 160 | break; |
marcoricci | 0:427833cc260e | 161 | case LEVEL6: |
marcoricci | 0:427833cc260e | 162 | StartUP.reset(); |
marcoricci | 0:427833cc260e | 163 | Level = LEVEL1; |
marcoricci | 0:427833cc260e | 164 | break; |
marcoricci | 0:427833cc260e | 165 | } |
marcoricci | 0:427833cc260e | 166 | } |
marcoricci | 0:427833cc260e | 167 | |
marcoricci | 0:427833cc260e | 168 | void Menu3(void) |
marcoricci | 0:427833cc260e | 169 | { |
marcoricci | 0:427833cc260e | 170 | switch (Level) { |
marcoricci | 0:427833cc260e | 171 | case LEVEL1: |
marcoricci | 0:427833cc260e | 172 | Seg1 = tabFunc[0U]; |
marcoricci | 0:427833cc260e | 173 | DG = 0u; |
marcoricci | 0:427833cc260e | 174 | Seg2 = tabSeg[0U]; |
marcoricci | 0:427833cc260e | 175 | Seg3 = tabSeg[3U]; |
marcoricci | 0:427833cc260e | 176 | break; |
marcoricci | 0:427833cc260e | 177 | case LEVEL2: |
marcoricci | 0:427833cc260e | 178 | DG = 0u; |
marcoricci | 0:427833cc260e | 179 | Seg1 = tabFunc[1U]; |
marcoricci | 0:427833cc260e | 180 | Seg2 = tabFunc[4U]; |
marcoricci | 0:427833cc260e | 181 | Seg3 = tabFunc[5U]; |
marcoricci | 0:427833cc260e | 182 | break; |
marcoricci | 0:427833cc260e | 183 | case LEVEL3: |
marcoricci | 0:427833cc260e | 184 | StartDW.reset(); |
marcoricci | 0:427833cc260e | 185 | CntDw = 15U; |
marcoricci | 0:427833cc260e | 186 | CntDw = SetCounterDW(CntDw); |
marcoricci | 0:427833cc260e | 187 | break; |
marcoricci | 0:427833cc260e | 188 | case LEVEL4: |
marcoricci | 0:427833cc260e | 189 | CounterDW(); |
marcoricci | 0:427833cc260e | 190 | break; |
marcoricci | 0:427833cc260e | 191 | case LEVEL5: |
marcoricci | 0:427833cc260e | 192 | break; |
marcoricci | 0:427833cc260e | 193 | case LEVEL6: |
marcoricci | 0:427833cc260e | 194 | StartDW.reset(); |
marcoricci | 0:427833cc260e | 195 | Level = LEVEL1; |
marcoricci | 0:427833cc260e | 196 | break; |
marcoricci | 0:427833cc260e | 197 | } |
marcoricci | 0:427833cc260e | 198 | } |
marcoricci | 0:427833cc260e | 199 | |
marcoricci | 0:427833cc260e | 200 | |
marcoricci | 0:427833cc260e | 201 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 202 | // * Keyboard * |
marcoricci | 0:427833cc260e | 203 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 204 | // routine interrutpt |
marcoricci | 0:427833cc260e | 205 | void KeybOk() { |
marcoricci | 0:427833cc260e | 206 | if (debounceOK.read_ms()>200) // only allow toggle if debounce timer |
marcoricci | 0:427833cc260e | 207 | { |
marcoricci | 0:427833cc260e | 208 | bitFlag.keyB = 1; |
marcoricci | 0:427833cc260e | 209 | bitFlag.keyOk = 1; |
marcoricci | 0:427833cc260e | 210 | } |
marcoricci | 0:427833cc260e | 211 | debounceOK.reset(); // restart timer when the toggle is performed |
marcoricci | 0:427833cc260e | 212 | BuzzerOK(); |
marcoricci | 0:427833cc260e | 213 | } |
marcoricci | 0:427833cc260e | 214 | |
marcoricci | 0:427833cc260e | 215 | // routine interrutpt |
marcoricci | 0:427833cc260e | 216 | void KeybSEL() { |
marcoricci | 0:427833cc260e | 217 | if (debounceSEL.read_ms()>200) |
marcoricci | 0:427833cc260e | 218 | { |
marcoricci | 0:427833cc260e | 219 | bitFlag.keyB = 1; |
marcoricci | 0:427833cc260e | 220 | bitFlag.keySel = 1; |
marcoricci | 0:427833cc260e | 221 | } |
marcoricci | 0:427833cc260e | 222 | debounceSEL.reset(); // restart timer when the toggle is performed |
marcoricci | 0:427833cc260e | 223 | BuzzerSEL(); |
marcoricci | 0:427833cc260e | 224 | } |
marcoricci | 0:427833cc260e | 225 | |
marcoricci | 0:427833cc260e | 226 | char Keyboard(void) |
marcoricci | 0:427833cc260e | 227 | { |
marcoricci | 0:427833cc260e | 228 | if (bitFlag.keyB == 0) return (KEYNULL); |
marcoricci | 0:427833cc260e | 229 | if (bitFlag.keyOk) |
marcoricci | 0:427833cc260e | 230 | { |
marcoricci | 0:427833cc260e | 231 | KeyPress = KEYOK; |
marcoricci | 0:427833cc260e | 232 | bitFlag.keyOk = 0; |
marcoricci | 0:427833cc260e | 233 | } |
marcoricci | 0:427833cc260e | 234 | if (bitFlag.keySel) |
marcoricci | 0:427833cc260e | 235 | { |
marcoricci | 0:427833cc260e | 236 | KeyPress = KEYSEL; |
marcoricci | 0:427833cc260e | 237 | bitFlag.keySel = 0; |
marcoricci | 0:427833cc260e | 238 | } |
marcoricci | 0:427833cc260e | 239 | bitFlag.keyB = 0; |
marcoricci | 0:427833cc260e | 240 | return (KeyPress); |
marcoricci | 0:427833cc260e | 241 | } |
marcoricci | 0:427833cc260e | 242 | |
marcoricci | 0:427833cc260e | 243 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 244 | // * DC measure * |
marcoricci | 0:427833cc260e | 245 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 246 | void Voltmetro (void) |
marcoricci | 0:427833cc260e | 247 | { |
marcoricci | 0:427833cc260e | 248 | unsigned short unit,dec,cent; |
marcoricci | 0:427833cc260e | 249 | float tmpADCdata; |
marcoricci | 0:427833cc260e | 250 | |
marcoricci | 0:427833cc260e | 251 | // lettura adc |
marcoricci | 0:427833cc260e | 252 | ADCdata = Ain * 3.3; |
marcoricci | 0:427833cc260e | 253 | |
marcoricci | 0:427833cc260e | 254 | //unita |
marcoricci | 0:427833cc260e | 255 | unit = (unsigned short)ADCdata; |
marcoricci | 0:427833cc260e | 256 | Seg1 = tabSeg[unit]; |
marcoricci | 0:427833cc260e | 257 | DG = 0u; |
marcoricci | 0:427833cc260e | 258 | |
marcoricci | 0:427833cc260e | 259 | //decine |
marcoricci | 0:427833cc260e | 260 | tmpADCdata = ADCdata - (unsigned short)ADCdata; |
marcoricci | 0:427833cc260e | 261 | dec = (unsigned short)(tmpADCdata * 10U); |
marcoricci | 0:427833cc260e | 262 | Seg2 = tabSeg[dec]; |
marcoricci | 0:427833cc260e | 263 | |
marcoricci | 0:427833cc260e | 264 | //centinaia |
marcoricci | 0:427833cc260e | 265 | tmpADCdata = ADCdata - (unsigned short)ADCdata; |
marcoricci | 0:427833cc260e | 266 | tmpADCdata = tmpADCdata * 10U; |
marcoricci | 0:427833cc260e | 267 | tmpADCdata = tmpADCdata - (unsigned short)tmpADCdata; |
marcoricci | 0:427833cc260e | 268 | cent = (unsigned short)(tmpADCdata * 10U); |
marcoricci | 0:427833cc260e | 269 | Seg3 = tabSeg[cent]; |
marcoricci | 0:427833cc260e | 270 | } |
marcoricci | 0:427833cc260e | 271 | |
marcoricci | 0:427833cc260e | 272 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 273 | // * Counters * |
marcoricci | 0:427833cc260e | 274 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 275 | void CounterUP (void) |
marcoricci | 0:427833cc260e | 276 | { |
marcoricci | 0:427833cc260e | 277 | |
marcoricci | 0:427833cc260e | 278 | if (StartUP.read_ms()>= 1000) |
marcoricci | 0:427833cc260e | 279 | { |
marcoricci | 0:427833cc260e | 280 | if (CntUp < 999) |
marcoricci | 0:427833cc260e | 281 | { |
marcoricci | 0:427833cc260e | 282 | CntUp++; |
marcoricci | 0:427833cc260e | 283 | buzzer.period(1./4000.); // set PWM period |
marcoricci | 0:427833cc260e | 284 | buzzer=0.5; // set duty cycle |
marcoricci | 0:427833cc260e | 285 | wait(0.05); |
marcoricci | 0:427833cc260e | 286 | buzzer.period(1./0.); // set PWM period |
marcoricci | 0:427833cc260e | 287 | } |
marcoricci | 0:427833cc260e | 288 | else |
marcoricci | 0:427833cc260e | 289 | { |
marcoricci | 0:427833cc260e | 290 | CntUp = 0; |
marcoricci | 0:427833cc260e | 291 | } |
marcoricci | 0:427833cc260e | 292 | StartUP.reset(); |
marcoricci | 0:427833cc260e | 293 | } |
marcoricci | 0:427833cc260e | 294 | Visual7(CntUp); |
marcoricci | 0:427833cc260e | 295 | } |
marcoricci | 0:427833cc260e | 296 | |
marcoricci | 0:427833cc260e | 297 | void CounterDW (void) |
marcoricci | 0:427833cc260e | 298 | { |
marcoricci | 0:427833cc260e | 299 | |
marcoricci | 0:427833cc260e | 300 | if (StartDW.read_ms()>= 1000U) |
marcoricci | 0:427833cc260e | 301 | { |
marcoricci | 0:427833cc260e | 302 | if (CntDw > 0U) |
marcoricci | 0:427833cc260e | 303 | { |
marcoricci | 0:427833cc260e | 304 | CntDw--; |
marcoricci | 0:427833cc260e | 305 | buzzer.period(1./4000.); // set PWM period |
marcoricci | 0:427833cc260e | 306 | buzzer=0.5; // set duty cycle |
marcoricci | 0:427833cc260e | 307 | wait(0.05); |
marcoricci | 0:427833cc260e | 308 | buzzer.period(1./0.); // set PWM period |
marcoricci | 0:427833cc260e | 309 | } |
marcoricci | 0:427833cc260e | 310 | else |
marcoricci | 0:427833cc260e | 311 | { |
marcoricci | 0:427833cc260e | 312 | buzzer.period(1./3000.); // set PWM period |
marcoricci | 0:427833cc260e | 313 | buzzer=0.5; // set duty cycle |
marcoricci | 0:427833cc260e | 314 | wait(3.5); |
marcoricci | 0:427833cc260e | 315 | buzzer.period(1./0.); // set PWM period |
marcoricci | 0:427833cc260e | 316 | Level = LEVEL5; |
marcoricci | 0:427833cc260e | 317 | } |
marcoricci | 0:427833cc260e | 318 | StartDW.reset(); |
marcoricci | 0:427833cc260e | 319 | } |
marcoricci | 0:427833cc260e | 320 | if (CntDw == 0) CounterDWend(); |
marcoricci | 0:427833cc260e | 321 | else Visual7(CntDw); |
marcoricci | 0:427833cc260e | 322 | } |
marcoricci | 0:427833cc260e | 323 | |
marcoricci | 0:427833cc260e | 324 | void Visual7(int counter) |
marcoricci | 0:427833cc260e | 325 | { |
marcoricci | 0:427833cc260e | 326 | unsigned short unit,dec,cent, tmpCntUP; |
marcoricci | 0:427833cc260e | 327 | |
marcoricci | 0:427833cc260e | 328 | DG = 1U; |
marcoricci | 0:427833cc260e | 329 | |
marcoricci | 0:427833cc260e | 330 | //centinaia |
marcoricci | 0:427833cc260e | 331 | tmpCntUP = counter/100U; |
marcoricci | 0:427833cc260e | 332 | cent = tmpCntUP; |
marcoricci | 0:427833cc260e | 333 | Seg1 = tabSeg[cent]; |
marcoricci | 0:427833cc260e | 334 | |
marcoricci | 0:427833cc260e | 335 | //decine |
marcoricci | 0:427833cc260e | 336 | tmpCntUP = counter- cent * 100U; |
marcoricci | 0:427833cc260e | 337 | tmpCntUP = tmpCntUP / 10U; |
marcoricci | 0:427833cc260e | 338 | dec = tmpCntUP; |
marcoricci | 0:427833cc260e | 339 | Seg2 = tabSeg[dec]; |
marcoricci | 0:427833cc260e | 340 | |
marcoricci | 0:427833cc260e | 341 | //unity |
marcoricci | 0:427833cc260e | 342 | tmpCntUP = counter - cent * 100U - dec * 10U; |
marcoricci | 0:427833cc260e | 343 | unit = tmpCntUP; |
marcoricci | 0:427833cc260e | 344 | Seg3 = tabSeg[unit]; |
marcoricci | 0:427833cc260e | 345 | } |
marcoricci | 0:427833cc260e | 346 | |
marcoricci | 0:427833cc260e | 347 | int SetCounterDW (int countrDW) |
marcoricci | 0:427833cc260e | 348 | { |
marcoricci | 0:427833cc260e | 349 | char out = 1; |
marcoricci | 0:427833cc260e | 350 | |
marcoricci | 0:427833cc260e | 351 | do { |
marcoricci | 0:427833cc260e | 352 | if (Keyboard() != KEYNULL) { |
marcoricci | 0:427833cc260e | 353 | |
marcoricci | 0:427833cc260e | 354 | switch (KeyPress) { |
marcoricci | 0:427833cc260e | 355 | case KEYSEL: |
marcoricci | 0:427833cc260e | 356 | if (countrDW > 0U) countrDW--; |
marcoricci | 0:427833cc260e | 357 | else countrDW = 180U; |
marcoricci | 0:427833cc260e | 358 | break; |
marcoricci | 0:427833cc260e | 359 | case KEYOK: |
marcoricci | 0:427833cc260e | 360 | Level = LEVEL4; |
marcoricci | 0:427833cc260e | 361 | out = 0U; |
marcoricci | 0:427833cc260e | 362 | break; |
marcoricci | 0:427833cc260e | 363 | } |
marcoricci | 0:427833cc260e | 364 | } |
marcoricci | 0:427833cc260e | 365 | Visual7(countrDW); |
marcoricci | 0:427833cc260e | 366 | } while (out); |
marcoricci | 0:427833cc260e | 367 | |
marcoricci | 0:427833cc260e | 368 | return(countrDW); |
marcoricci | 0:427833cc260e | 369 | } |
marcoricci | 0:427833cc260e | 370 | |
marcoricci | 0:427833cc260e | 371 | void CounterDWend(void) |
marcoricci | 0:427833cc260e | 372 | { |
marcoricci | 0:427833cc260e | 373 | Seg1 = tabFunc[6U]; |
marcoricci | 0:427833cc260e | 374 | Seg2 = tabFunc[7U]; |
marcoricci | 0:427833cc260e | 375 | Seg3 = tabFunc[8U]; |
marcoricci | 0:427833cc260e | 376 | } |
marcoricci | 0:427833cc260e | 377 | |
marcoricci | 0:427833cc260e | 378 | |
marcoricci | 0:427833cc260e | 379 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 380 | // * Buzzer * |
marcoricci | 0:427833cc260e | 381 | // * --------------------------------------------------- * |
marcoricci | 0:427833cc260e | 382 | void BuzzerSEL (void) |
marcoricci | 0:427833cc260e | 383 | { |
marcoricci | 0:427833cc260e | 384 | // buzzer |
marcoricci | 0:427833cc260e | 385 | buzzer.period(1./2000.); // set PWM period |
marcoricci | 0:427833cc260e | 386 | buzzer=0.5; // set duty cycle |
marcoricci | 0:427833cc260e | 387 | wait(0.05); |
marcoricci | 0:427833cc260e | 388 | buzzer.period(1./0); // set PWM period |
marcoricci | 0:427833cc260e | 389 | } |
marcoricci | 0:427833cc260e | 390 | |
marcoricci | 0:427833cc260e | 391 | void BuzzerOK (void) |
marcoricci | 0:427833cc260e | 392 | { |
marcoricci | 0:427833cc260e | 393 | // buzzer |
marcoricci | 0:427833cc260e | 394 | buzzer.period(1./1000.); // set PWM period |
marcoricci | 0:427833cc260e | 395 | buzzer=0.5; // set duty cycle |
marcoricci | 0:427833cc260e | 396 | wait(0.05); |
marcoricci | 0:427833cc260e | 397 | buzzer.period(1./0); // set PWM period |
marcoricci | 0:427833cc260e | 398 | } |