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.
Dependencies: mbed
main.cpp@0:7b9ca8e5811b, 2015-10-29 (annotated)
- Committer:
- NickDGreg
- Date:
- Thu Oct 29 09:43:31 2015 +0000
- Revision:
- 0:7b9ca8e5811b
- Child:
- 1:aa0d93df1af1
moves left, moves right, and presses a key using buttons and pot meters. Back up programme if filters fail
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| NickDGreg | 0:7b9ca8e5811b | 1 | #include "mbed.h" |
| NickDGreg | 0:7b9ca8e5811b | 2 | |
| NickDGreg | 0:7b9ca8e5811b | 3 | Serial pc(USBTX, USBRX); |
| NickDGreg | 0:7b9ca8e5811b | 4 | |
| NickDGreg | 0:7b9ca8e5811b | 5 | |
| NickDGreg | 0:7b9ca8e5811b | 6 | // Define pin for motor control |
| NickDGreg | 0:7b9ca8e5811b | 7 | DigitalOut directionPin(D4); |
| NickDGreg | 0:7b9ca8e5811b | 8 | PwmOut PWM(D5); |
| NickDGreg | 0:7b9ca8e5811b | 9 | DigitalOut directionPin_key(D7); |
| NickDGreg | 0:7b9ca8e5811b | 10 | PwmOut PWM_key(D6); |
| NickDGreg | 0:7b9ca8e5811b | 11 | |
| NickDGreg | 0:7b9ca8e5811b | 12 | DigitalIn buttonccw(PTA4); |
| NickDGreg | 0:7b9ca8e5811b | 13 | DigitalIn buttoncw(PTC6); |
| NickDGreg | 0:7b9ca8e5811b | 14 | |
| NickDGreg | 0:7b9ca8e5811b | 15 | AnalogIn left_pot(A0); |
| NickDGreg | 0:7b9ca8e5811b | 16 | AnalogIn right_pot(A1); |
| NickDGreg | 0:7b9ca8e5811b | 17 | double emg_left; |
| NickDGreg | 0:7b9ca8e5811b | 18 | double emg_right; |
| NickDGreg | 0:7b9ca8e5811b | 19 | |
| NickDGreg | 0:7b9ca8e5811b | 20 | const int Button_move_pressed = 0; |
| NickDGreg | 0:7b9ca8e5811b | 21 | const int Button_back_pressed = 0; |
| NickDGreg | 0:7b9ca8e5811b | 22 | |
| NickDGreg | 0:7b9ca8e5811b | 23 | const int cw = 1; |
| NickDGreg | 0:7b9ca8e5811b | 24 | const int ccw = 0; |
| NickDGreg | 0:7b9ca8e5811b | 25 | |
| NickDGreg | 0:7b9ca8e5811b | 26 | //right button |
| NickDGreg | 0:7b9ca8e5811b | 27 | DigitalIn button_left(PTC4); |
| NickDGreg | 0:7b9ca8e5811b | 28 | DigitalIn button_right(PTC6); |
| NickDGreg | 0:7b9ca8e5811b | 29 | |
| NickDGreg | 0:7b9ca8e5811b | 30 | int main() |
| NickDGreg | 0:7b9ca8e5811b | 31 | { |
| NickDGreg | 0:7b9ca8e5811b | 32 | pc.printf("at the begin"); |
| NickDGreg | 0:7b9ca8e5811b | 33 | //directionPin_key.write(cw); |
| NickDGreg | 0:7b9ca8e5811b | 34 | //PWM_key.write(0); |
| NickDGreg | 0:7b9ca8e5811b | 35 | |
| NickDGreg | 0:7b9ca8e5811b | 36 | //aansturen.attach( &Go_flag_motor, 0.01f ); // 100 Hz // timer 0.00001f motor keeps spinning |
| NickDGreg | 0:7b9ca8e5811b | 37 | //HIDScope_timer.attach(&Go_flag_HIDScope, 0.02);//0.02 had worked |
| NickDGreg | 0:7b9ca8e5811b | 38 | //Filteren_timer.attach(&Go_flag_filteren,0.04);// 0.04 had worked |
| NickDGreg | 0:7b9ca8e5811b | 39 | while(1) { |
| NickDGreg | 0:7b9ca8e5811b | 40 | |
| NickDGreg | 0:7b9ca8e5811b | 41 | /* |
| NickDGreg | 0:7b9ca8e5811b | 42 | if(Flag_filteren) { |
| NickDGreg | 0:7b9ca8e5811b | 43 | Flag_filteren = false; |
| NickDGreg | 0:7b9ca8e5811b | 44 | // filter left and set bool |
| NickDGreg | 0:7b9ca8e5811b | 45 | filter_signal_hid_left = Filteren_left(analog_emg_left.read()); |
| NickDGreg | 0:7b9ca8e5811b | 46 | |
| NickDGreg | 0:7b9ca8e5811b | 47 | if (filter_signal_hid_left > high_threshold) { |
| NickDGreg | 0:7b9ca8e5811b | 48 | left_movement = true; |
| NickDGreg | 0:7b9ca8e5811b | 49 | } else if (filter_signal_hid_left < low_threshold) { |
| NickDGreg | 0:7b9ca8e5811b | 50 | left_movement = false; |
| NickDGreg | 0:7b9ca8e5811b | 51 | } |
| NickDGreg | 0:7b9ca8e5811b | 52 | // make filter right and set bool |
| NickDGreg | 0:7b9ca8e5811b | 53 | filter_signal_hid_right = Filteren_right(analog_emg_right.read()); |
| NickDGreg | 0:7b9ca8e5811b | 54 | |
| NickDGreg | 0:7b9ca8e5811b | 55 | if (filter_signal_hid_right > high_threshold) { |
| NickDGreg | 0:7b9ca8e5811b | 56 | right_movement = true; |
| NickDGreg | 0:7b9ca8e5811b | 57 | } else if (filter_signal_hid_right < low_threshold) { |
| NickDGreg | 0:7b9ca8e5811b | 58 | right_movement = false; |
| NickDGreg | 0:7b9ca8e5811b | 59 | } |
| NickDGreg | 0:7b9ca8e5811b | 60 | |
| NickDGreg | 0:7b9ca8e5811b | 61 | |
| NickDGreg | 0:7b9ca8e5811b | 62 | } |
| NickDGreg | 0:7b9ca8e5811b | 63 | |
| NickDGreg | 0:7b9ca8e5811b | 64 | |
| NickDGreg | 0:7b9ca8e5811b | 65 | |
| NickDGreg | 0:7b9ca8e5811b | 66 | if(Flag_HIDScope) { |
| NickDGreg | 0:7b9ca8e5811b | 67 | Flag_HIDScope = false; |
| NickDGreg | 0:7b9ca8e5811b | 68 | HIDScope_kijken(); |
| NickDGreg | 0:7b9ca8e5811b | 69 | |
| NickDGreg | 0:7b9ca8e5811b | 70 | } |
| NickDGreg | 0:7b9ca8e5811b | 71 | |
| NickDGreg | 0:7b9ca8e5811b | 72 | |
| NickDGreg | 0:7b9ca8e5811b | 73 | |
| NickDGreg | 0:7b9ca8e5811b | 74 | if(flag_motor) { |
| NickDGreg | 0:7b9ca8e5811b | 75 | flag_motor = false; |
| NickDGreg | 0:7b9ca8e5811b | 76 | motor1_Controller(); |
| NickDGreg | 0:7b9ca8e5811b | 77 | |
| NickDGreg | 0:7b9ca8e5811b | 78 | } |
| NickDGreg | 0:7b9ca8e5811b | 79 | |
| NickDGreg | 0:7b9ca8e5811b | 80 | if( left_movement and right_movement == false) { |
| NickDGreg | 0:7b9ca8e5811b | 81 | setpoint = making_setpoint(cw); |
| NickDGreg | 0:7b9ca8e5811b | 82 | |
| NickDGreg | 0:7b9ca8e5811b | 83 | |
| NickDGreg | 0:7b9ca8e5811b | 84 | } |
| NickDGreg | 0:7b9ca8e5811b | 85 | else if(right_movement and left_movement == false ) { |
| NickDGreg | 0:7b9ca8e5811b | 86 | setpoint = making_setpoint(ccw); |
| NickDGreg | 0:7b9ca8e5811b | 87 | } |
| NickDGreg | 0:7b9ca8e5811b | 88 | |
| NickDGreg | 0:7b9ca8e5811b | 89 | else if(right_movement and left_movement) { |
| NickDGreg | 0:7b9ca8e5811b | 90 | |
| NickDGreg | 0:7b9ca8e5811b | 91 | PWM_key.write(1); |
| NickDGreg | 0:7b9ca8e5811b | 92 | //pc.printf("I am working"); |
| NickDGreg | 0:7b9ca8e5811b | 93 | } |
| NickDGreg | 0:7b9ca8e5811b | 94 | else { |
| NickDGreg | 0:7b9ca8e5811b | 95 | PWM_key.write(0); |
| NickDGreg | 0:7b9ca8e5811b | 96 | // pc.printf("resting /n"); |
| NickDGreg | 0:7b9ca8e5811b | 97 | } |
| NickDGreg | 0:7b9ca8e5811b | 98 | */ |
| NickDGreg | 0:7b9ca8e5811b | 99 | |
| NickDGreg | 0:7b9ca8e5811b | 100 | emg_left = left_pot.read(); |
| NickDGreg | 0:7b9ca8e5811b | 101 | emg_right = right_pot.read(); |
| NickDGreg | 0:7b9ca8e5811b | 102 | |
| NickDGreg | 0:7b9ca8e5811b | 103 | while (emg_left > 0.5 and emg_right < 0.5) |
| NickDGreg | 0:7b9ca8e5811b | 104 | { |
| NickDGreg | 0:7b9ca8e5811b | 105 | directionPin.write(cw); |
| NickDGreg | 0:7b9ca8e5811b | 106 | PWM.write(1); |
| NickDGreg | 0:7b9ca8e5811b | 107 | pc.printf("left \n"); |
| NickDGreg | 0:7b9ca8e5811b | 108 | emg_left = left_pot.read(); |
| NickDGreg | 0:7b9ca8e5811b | 109 | } |
| NickDGreg | 0:7b9ca8e5811b | 110 | |
| NickDGreg | 0:7b9ca8e5811b | 111 | while (emg_right > 0.5 and emg_left < 0.5) |
| NickDGreg | 0:7b9ca8e5811b | 112 | { |
| NickDGreg | 0:7b9ca8e5811b | 113 | directionPin.write(ccw); |
| NickDGreg | 0:7b9ca8e5811b | 114 | PWM.write(1); |
| NickDGreg | 0:7b9ca8e5811b | 115 | pc.printf("right \n"); |
| NickDGreg | 0:7b9ca8e5811b | 116 | emg_right = right_pot.read(); |
| NickDGreg | 0:7b9ca8e5811b | 117 | } |
| NickDGreg | 0:7b9ca8e5811b | 118 | if (button_right.read() == Button_move_pressed) |
| NickDGreg | 0:7b9ca8e5811b | 119 | { |
| NickDGreg | 0:7b9ca8e5811b | 120 | pc.printf("button move \n"); |
| NickDGreg | 0:7b9ca8e5811b | 121 | //move to key |
| NickDGreg | 0:7b9ca8e5811b | 122 | directionPin_key.write(cw); |
| NickDGreg | 0:7b9ca8e5811b | 123 | PWM_key.write(0.3); |
| NickDGreg | 0:7b9ca8e5811b | 124 | wait(0.8); |
| NickDGreg | 0:7b9ca8e5811b | 125 | PWM.write(0); |
| NickDGreg | 0:7b9ca8e5811b | 126 | wait(0.3); |
| NickDGreg | 0:7b9ca8e5811b | 127 | directionPin_key.write(ccw); |
| NickDGreg | 0:7b9ca8e5811b | 128 | PWM_key.write(0.3); |
| NickDGreg | 0:7b9ca8e5811b | 129 | wait(0.8); |
| NickDGreg | 0:7b9ca8e5811b | 130 | |
| NickDGreg | 0:7b9ca8e5811b | 131 | } |
| NickDGreg | 0:7b9ca8e5811b | 132 | /* |
| NickDGreg | 0:7b9ca8e5811b | 133 | while (button_left.read() == Button_back_pressed) |
| NickDGreg | 0:7b9ca8e5811b | 134 | { |
| NickDGreg | 0:7b9ca8e5811b | 135 | //move back to start |
| NickDGreg | 0:7b9ca8e5811b | 136 | pc.printf("button move backwards \n"); |
| NickDGreg | 0:7b9ca8e5811b | 137 | directionPin_key.write(ccw); |
| NickDGreg | 0:7b9ca8e5811b | 138 | PWM_key.write(0.3); |
| NickDGreg | 0:7b9ca8e5811b | 139 | } |
| NickDGreg | 0:7b9ca8e5811b | 140 | */ |
| NickDGreg | 0:7b9ca8e5811b | 141 | PWM_key.write(0); |
| NickDGreg | 0:7b9ca8e5811b | 142 | PWM.write(0); |
| NickDGreg | 0:7b9ca8e5811b | 143 | } |
| NickDGreg | 0:7b9ca8e5811b | 144 | } |
| NickDGreg | 0:7b9ca8e5811b | 145 |