Ramon Waninge / Mbed 2 deprecated Milestone1

Dependencies:   FastPWM mbed QEI biquadFilter HIDScope MODSERIAL

Committer:
efvanmarrewijk
Date:
Mon Oct 08 15:10:47 2018 +0000
Revision:
11:3efd6a324f16
Parent:
10:ac36f9a204dd
Child:
12:ef4ba26d0e2f
Child:
13:6556cd086d07
3 working motors, with existing variables for the encoder (not yet implemented). With added comments about the working mechanisms of the program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ramonwaninge 0:3ea1bbfbeaae 1 #include "mbed.h"
efvanmarrewijk 11:3efd6a324f16 2 #include "FastPWM.h"
efvanmarrewijk 11:3efd6a324f16 3 #include "QEI.h" // Includes library for encoder
Ramonwaninge 0:3ea1bbfbeaae 4
Ramonwaninge 0:3ea1bbfbeaae 5 Ticker motor;
Ramonwaninge 0:3ea1bbfbeaae 6
Ramonwaninge 4:0c27632b453a 7 AnalogIn pot1(A1);
Ramonwaninge 5:047db32db712 8 AnalogIn pot2(A2);
efvanmarrewijk 11:3efd6a324f16 9 InterruptIn button1(D0);
efvanmarrewijk 11:3efd6a324f16 10 InterruptIn button2(D1);
efvanmarrewijk 11:3efd6a324f16 11 InterruptIn emergencybutton(SW2); /* This is not yet implemented!
efvanmarrewijk 11:3efd6a324f16 12 The button SW2 on the K64F is the emergency button: if you press this,
efvanmarrewijk 11:3efd6a324f16 13 everything will abort as soon as possible
efvanmarrewijk 11:3efd6a324f16 14 */
efvanmarrewijk 11:3efd6a324f16 15
efvanmarrewijk 11:3efd6a324f16 16 DigitalIn pin8(D8); // Encoder 1 u3
efvanmarrewijk 11:3efd6a324f16 17 DigitalIn pin9(D9); // Encoder 1 A
efvanmarrewijk 11:3efd6a324f16 18 DigitalIn pin10(D10); // Encoder 2 u3
efvanmarrewijk 11:3efd6a324f16 19 DigitalIn pin11(D11); // Encoder 2 A
efvanmarrewijk 11:3efd6a324f16 20 DigitalIn pin12(D12); // Encoder 3 u3
efvanmarrewijk 11:3efd6a324f16 21 DigitalIn pin13(D13); // Encoder 3 A
efvanmarrewijk 9:65c52c1f4a57 22
efvanmarrewijk 10:ac36f9a204dd 23 DigitalOut pin2(D2); // Motor 3 direction
efvanmarrewijk 9:65c52c1f4a57 24 FastPWM pin3(D3); // Motor 3 pwm
efvanmarrewijk 10:ac36f9a204dd 25 DigitalOut pin4(D4); // Motor 2 direction
efvanmarrewijk 6:3c9569087274 26 FastPWM pin5(D5); // Motor 2 pwm
efvanmarrewijk 6:3c9569087274 27 FastPWM pin6(D6); // Motor 1 pwm
efvanmarrewijk 6:3c9569087274 28 DigitalOut pin7(D7); // Motor 1 direction
efvanmarrewijk 6:3c9569087274 29 //float u1 = pot1;
Ramonwaninge 2:d8a552d1d33a 30
efvanmarrewijk 11:3efd6a324f16 31 float u3 = 0.0; // Normalised variable for the movement of motor 3
efvanmarrewijk 9:65c52c1f4a57 32
efvanmarrewijk 11:3efd6a324f16 33 void draaibuttons()
efvanmarrewijk 11:3efd6a324f16 34 { /* Pressing button 2 concludes in a change of speed. While button 1 is pressed,
efvanmarrewijk 11:3efd6a324f16 35 the direction of change of speed is reversed. So pressing button 1 and 2
efvanmarrewijk 11:3efd6a324f16 36 simultaneously results for the turning speed of motor 3 in a slower movement,
efvanmarrewijk 11:3efd6a324f16 37 and eventually the motor will turn the other way around.
efvanmarrewijk 11:3efd6a324f16 38 */
efvanmarrewijk 11:3efd6a324f16 39 if (button1 == 1)
efvanmarrewijk 11:3efd6a324f16 40 { if (button2 == 1)
efvanmarrewijk 11:3efd6a324f16 41 { u3 = u3 + 0.1; //In stapjes van 0.1
efvanmarrewijk 11:3efd6a324f16 42 pin3 = fabs(u3);
efvanmarrewijk 11:3efd6a324f16 43 if (u3>1.0)
efvanmarrewijk 11:3efd6a324f16 44 { u3 = 1.0;
efvanmarrewijk 11:3efd6a324f16 45 }
efvanmarrewijk 10:ac36f9a204dd 46 }
efvanmarrewijk 9:65c52c1f4a57 47 }
efvanmarrewijk 11:3efd6a324f16 48 else if (button1 == 0)
efvanmarrewijk 11:3efd6a324f16 49 { if (button2 == 1)
efvanmarrewijk 11:3efd6a324f16 50 { u3 = u3 - 0.1;
efvanmarrewijk 11:3efd6a324f16 51 pin3 = fabs(u3);
efvanmarrewijk 11:3efd6a324f16 52 if (u3>1.0)
efvanmarrewijk 11:3efd6a324f16 53 { u3 = 1.0;
efvanmarrewijk 11:3efd6a324f16 54 }
efvanmarrewijk 9:65c52c1f4a57 55 }
efvanmarrewijk 9:65c52c1f4a57 56 }
efvanmarrewijk 11:3efd6a324f16 57 }
efvanmarrewijk 9:65c52c1f4a57 58
efvanmarrewijk 11:3efd6a324f16 59 void draai()
efvanmarrewijk 11:3efd6a324f16 60 /* Function for the movement of all motors, using the potmeters for the moving
efvanmarrewijk 11:3efd6a324f16 61 direction and speed of motor 1 and 2, and using button 1 and 2 on the biorobotics
efvanmarrewijk 11:3efd6a324f16 62 shield for the moving direction and speed of motor 3.
efvanmarrewijk 11:3efd6a324f16 63 */
efvanmarrewijk 11:3efd6a324f16 64 {
efvanmarrewijk 11:3efd6a324f16 65 float u1 = 2.0*(pot1 - 0.5); // Normalised variable for the movement of motor 1
efvanmarrewijk 6:3c9569087274 66 if (u1>0)
efvanmarrewijk 6:3c9569087274 67 { pin4 = true;
efvanmarrewijk 6:3c9569087274 68 }
efvanmarrewijk 6:3c9569087274 69 else if(u1<0)
efvanmarrewijk 6:3c9569087274 70 { pin4 = false;
efvanmarrewijk 6:3c9569087274 71 }
efvanmarrewijk 6:3c9569087274 72 pin5 = fabs(u1);
efvanmarrewijk 6:3c9569087274 73
efvanmarrewijk 11:3efd6a324f16 74 float u2 = 2.0*(pot2 - 0.5); // Normalised variable for the movement of motor 2
efvanmarrewijk 11:3efd6a324f16 75 if (u2<0)
efvanmarrewijk 6:3c9569087274 76 { pin7 = true;
efvanmarrewijk 6:3c9569087274 77 }
efvanmarrewijk 11:3efd6a324f16 78 else if(u2>0)
efvanmarrewijk 6:3c9569087274 79 { pin7 = false;
efvanmarrewijk 6:3c9569087274 80 }
efvanmarrewijk 11:3efd6a324f16 81 pin6 = fabs(u2);
efvanmarrewijk 11:3efd6a324f16 82
efvanmarrewijk 11:3efd6a324f16 83 if (u3>0)
efvanmarrewijk 11:3efd6a324f16 84 { pin2 = true;
efvanmarrewijk 11:3efd6a324f16 85 }
efvanmarrewijk 11:3efd6a324f16 86 else if(u3<0)
efvanmarrewijk 11:3efd6a324f16 87 { pin2 = false;
efvanmarrewijk 11:3efd6a324f16 88 }
efvanmarrewijk 11:3efd6a324f16 89 else
efvanmarrewijk 11:3efd6a324f16 90 { pin3 = 0;
efvanmarrewijk 11:3efd6a324f16 91 }
Ramonwaninge 3:d39285fdd103 92 }
efvanmarrewijk 11:3efd6a324f16 93
efvanmarrewijk 11:3efd6a324f16 94 int main()
efvanmarrewijk 11:3efd6a324f16 95 {
efvanmarrewijk 9:65c52c1f4a57 96 pin5.period(1.0/10000);
efvanmarrewijk 11:3efd6a324f16 97 button1.rise(&draaibuttons);
efvanmarrewijk 11:3efd6a324f16 98 button2.rise(&draaibuttons);
efvanmarrewijk 9:65c52c1f4a57 99
efvanmarrewijk 9:65c52c1f4a57 100 pin3.period_us(50);
efvanmarrewijk 9:65c52c1f4a57 101 motor.attach(draai, 0.001);
Ramonwaninge 1:e40e981acbf1 102
efvanmarrewijk 6:3c9569087274 103 pin5.period_us(50);
efvanmarrewijk 6:3c9569087274 104 motor.attach(draai, 0.001);
efvanmarrewijk 6:3c9569087274 105
efvanmarrewijk 6:3c9569087274 106 pin6.period_us(50);
efvanmarrewijk 6:3c9569087274 107 motor.attach(draai, 0.001);
efvanmarrewijk 11:3efd6a324f16 108 while(true)
efvanmarrewijk 11:3efd6a324f16 109 {
Ramonwaninge 3:d39285fdd103 110 }
Ramonwaninge 0:3ea1bbfbeaae 111 }