
Working read code with mode button
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Testnew by
main.cpp@12:21268d8bf979, 2017-10-16 (annotated)
- Committer:
- aismail1997
- Date:
- Mon Oct 16 15:45:17 2017 +0000
- Revision:
- 12:21268d8bf979
- Parent:
- 11:418a4437a693
- Child:
- 13:b302c71e300f
moved button code to a separate class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aismail1997 | 2:9eda4611081a | 1 | #include "mbed.h" |
aismail1997 | 8:1aa86ad19af9 | 2 | #include "rtos.h" |
aismail1997 | 11:418a4437a693 | 3 | #include "wave_player.h" |
aismail1997 | 11:418a4437a693 | 4 | #include "SDFileSystem.h" |
aismail1997 | 12:21268d8bf979 | 5 | #include "button.h" |
aismail1997 | 5:9ed43e974156 | 6 | |
aismail1997 | 2:9eda4611081a | 7 | PwmOut myservo(p21); |
aismail1997 | 2:9eda4611081a | 8 | DigitalIn pb1 (p20); |
aismail1997 | 2:9eda4611081a | 9 | //AnalogIn linpot(p20); |
aismail1997 | 2:9eda4611081a | 10 | Serial pc(USBTX, USBRX); |
aismail1997 | 6:cc181f8f2bd1 | 11 | //DigitalOut myled(LED1); |
aismail1997 | 6:cc181f8f2bd1 | 12 | SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card |
aismail1997 | 6:cc181f8f2bd1 | 13 | AnalogOut DACout(p26); |
aismail1997 | 6:cc181f8f2bd1 | 14 | wave_player waver(&DACout); |
aismail1997 | 12:21268d8bf979 | 15 | button button1(myservo, pb1); |
aismail1997 | 6:cc181f8f2bd1 | 16 | |
aismail1997 | 8:1aa86ad19af9 | 17 | // add start, mode, reset buttons |
aismail1997 | 11:418a4437a693 | 18 | int start = 0; |
aismail1997 | 11:418a4437a693 | 19 | int submit = 0; |
aismail1997 | 12:21268d8bf979 | 20 | // FIX THIS: button up: state = 2, button halfway: state = 0; button down: state = 1 |
aismail1997 | 12:21268d8bf979 | 21 | int state = 2; |
aismail1997 | 8:1aa86ad19af9 | 22 | |
aismail1997 | 11:418a4437a693 | 23 | // FUNCTIONS |
aismail1997 | 11:418a4437a693 | 24 | void playSound(wave_player waver) |
aismail1997 | 11:418a4437a693 | 25 | { |
aismail1997 | 11:418a4437a693 | 26 | FILE *wave_file; |
aismail1997 | 11:418a4437a693 | 27 | wave_file=fopen("/sd/police_siren.wav","r"); |
aismail1997 | 11:418a4437a693 | 28 | waver.play(wave_file); |
aismail1997 | 11:418a4437a693 | 29 | fclose(wave_file); |
aismail1997 | 11:418a4437a693 | 30 | } |
aismail1997 | 8:1aa86ad19af9 | 31 | |
aismail1997 | 8:1aa86ad19af9 | 32 | // THREADS |
aismail1997 | 8:1aa86ad19af9 | 33 | void button_thread() |
aismail1997 | 6:cc181f8f2bd1 | 34 | { |
aismail1997 | 12:21268d8bf979 | 35 | // button was up and is moving down, move servo in |
aismail1997 | 12:21268d8bf979 | 36 | if (pb1 == 1 && state == 2) { |
aismail1997 | 12:21268d8bf979 | 37 | button1.moveServoIn(); |
aismail1997 | 12:21268d8bf979 | 38 | state = 1; |
aismail1997 | 12:21268d8bf979 | 39 | } |
aismail1997 | 12:21268d8bf979 | 40 | // button was down and is being pushed again, move servo out |
aismail1997 | 12:21268d8bf979 | 41 | if (pb1 == 1 && state == 1) { |
aismail1997 | 12:21268d8bf979 | 42 | button1.moveServoOut(); |
aismail1997 | 12:21268d8bf979 | 43 | state = 2; |
aismail1997 | 12:21268d8bf979 | 44 | } |
aismail1997 | 6:cc181f8f2bd1 | 45 | } |
aismail1997 | 6:cc181f8f2bd1 | 46 | |
aismail1997 | 8:1aa86ad19af9 | 47 | void submit_thread() |
aismail1997 | 6:cc181f8f2bd1 | 48 | { |
aismail1997 | 8:1aa86ad19af9 | 49 | |
aismail1997 | 6:cc181f8f2bd1 | 50 | } |
aismail1997 | 6:cc181f8f2bd1 | 51 | |
aismail1997 | 8:1aa86ad19af9 | 52 | void start_thread() |
aismail1997 | 6:cc181f8f2bd1 | 53 | { |
aismail1997 | 8:1aa86ad19af9 | 54 | // read pb_start |
aismail1997 | 8:1aa86ad19af9 | 55 | // if 1 |
aismail1997 | 8:1aa86ad19af9 | 56 | start == 1; |
aismail1997 | 8:1aa86ad19af9 | 57 | // else 0 |
aismail1997 | 6:cc181f8f2bd1 | 58 | } |
aismail1997 | 2:9eda4611081a | 59 | |
aismail1997 | 2:9eda4611081a | 60 | int main() |
aismail1997 | 2:9eda4611081a | 61 | { |
aismail1997 | 8:1aa86ad19af9 | 62 | // SETUP |
aismail1997 | 6:cc181f8f2bd1 | 63 | // pull up the pushbutton to prevent bouncing |
aismail1997 | 2:9eda4611081a | 64 | pb1.mode(PullUp); |
aismail1997 | 2:9eda4611081a | 65 | wait(.001); |
aismail1997 | 6:cc181f8f2bd1 | 66 | // servo begins at 30 degrees |
aismail1997 | 12:21268d8bf979 | 67 | // replace with a button setup function |
aismail1997 | 2:9eda4611081a | 68 | for(int i=0; i<=3; i++) { |
aismail1997 | 2:9eda4611081a | 69 | myservo = i/100.0; |
aismail1997 | 2:9eda4611081a | 70 | wait(0.01); |
aismail1997 | 2:9eda4611081a | 71 | } |
aismail1997 | 6:cc181f8f2bd1 | 72 | |
aismail1997 | 8:1aa86ad19af9 | 73 | // MAIN THREAD |
aismail1997 | 8:1aa86ad19af9 | 74 | while(true) { |
aismail1997 | 8:1aa86ad19af9 | 75 | |
aismail1997 | 8:1aa86ad19af9 | 76 | // start threads for reset, mode, start |
aismail1997 | 8:1aa86ad19af9 | 77 | Thread t1(start_thread); |
aismail1997 | 8:1aa86ad19af9 | 78 | // setup SDcard and Speaker |
aismail1997 | 12:21268d8bf979 | 79 | |
aismail1997 | 8:1aa86ad19af9 | 80 | // when started |
aismail1997 | 8:1aa86ad19af9 | 81 | while (start == 0) {} |
aismail1997 | 8:1aa86ad19af9 | 82 | Thread t2(button_thread); |
aismail1997 | 12:21268d8bf979 | 83 | |
aismail1997 | 12:21268d8bf979 | 84 | //Thread t3(submit_thread); |
aismail1997 | 8:1aa86ad19af9 | 85 | |
aismail1997 | 8:1aa86ad19af9 | 86 | // when submitted |
aismail1997 | 12:21268d8bf979 | 87 | //while (submit == 0) {} |
aismail1997 | 12:21268d8bf979 | 88 | |
aismail1997 | 8:1aa86ad19af9 | 89 | |
aismail1997 | 8:1aa86ad19af9 | 90 | // start button threads and submit thread |
aismail1997 | 8:1aa86ad19af9 | 91 | // if submit close button threads and submit thread |
aismail1997 | 8:1aa86ad19af9 | 92 | // check result, speaker result |
aismail1997 | 8:1aa86ad19af9 | 93 | // save results |
aismail1997 | 8:1aa86ad19af9 | 94 | |
aismail1997 | 6:cc181f8f2bd1 | 95 | // SD card code |
aismail1997 | 6:cc181f8f2bd1 | 96 | |
aismail1997 | 6:cc181f8f2bd1 | 97 | // speaker code |
aismail1997 | 2:9eda4611081a | 98 | |
aismail1997 | 2:9eda4611081a | 99 | // read linear potentiometer |
aismail1997 | 2:9eda4611081a | 100 | //if (linpot < 0.5) { |
aismail1997 | 2:9eda4611081a | 101 | //float potval = linpot; |
aismail1997 | 2:9eda4611081a | 102 | //pc.printf("linear pot: %f\n", potval); |
aismail1997 | 2:9eda4611081a | 103 | } |
aismail1997 | 2:9eda4611081a | 104 | } |