Ramon Waninge / Mbed 2 deprecated Milestone1

Dependencies:   FastPWM mbed QEI biquadFilter HIDScope MODSERIAL

Committer:
efvanmarrewijk
Date:
Fri Oct 12 12:24:24 2018 +0000
Revision:
13:6556cd086d07
Parent:
11:3efd6a324f16
Child:
14:e21cb701ccb8
With extra added libraries

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