Biorobotics / Mbed 2 deprecated potMeter_control

Dependencies:   mbed

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?

UserRevisionLine numberNew 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