Ramon Waninge / Mbed 2 deprecated Milestone1

Dependencies:   FastPWM mbed QEI biquadFilter HIDScope MODSERIAL

Committer:
efvanmarrewijk
Date:
Mon Oct 22 14:19:25 2018 +0000
Revision:
19:1d0b25d4d775
Parent:
14:e21cb701ccb8
Child:
20:695140b8db2f
No change from previous version

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