Using HIDScope for P(I)D controller
Dependencies: FastPWM HIDScope MODSERIAL QEI biquadFilter mbed
Fork of PES_tutorial_5 by
Diff: main.cpp
- Revision:
- 0:2e33035d4e86
- Child:
- 1:c19fc63d555f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Oct 15 08:15:14 2018 +0000 @@ -0,0 +1,35 @@ +#include "mbed.h" +#include "FastPWM.h" // FastPWM library +//#include "MODSERIAL.h" +//MODSERIAL pc(USBTX, USBRX); +DigitalOut motor2_direction(D4); +DigitalOut motor1_direction(D7); +AnalogIn pot1(A4); +AnalogIn pot2(A5); +FastPWM motor2_pwm(D5); //FastPWM input, PES lecture 2 +FastPWM motor1_pwm(D6); +Ticker MotorInterrupt; + +void Motor() +{ + // Aflezen Potentiometers + volatile float pwm_pct1 = pot1.read(); // Aflezen PotMeter 1 (volatile omdat je altijd de potmeter wil blijven lezen) + volatile float pwm_pct2 = pot2.read(); // Aflezen PotMeter 2 + // Interval van (0,1) scalen naar (-1,1) + volatile float a1 = (2.0*pwm_pct1)- 1; // POT1. pwm_pct1 wordt gescaled, en offset number -1 wordt erbij opgeteld. + volatile float a2 = (2.0*pwm_pct2)- 1; // POT2. Idem. + // Motor Direction bepalen + motor1_direction = a1 > 0; // Bool variable. Al gespecificeerd als direction pin, daarom hoeft er geen bool voor. + motor2_direction = a2 > 0; // Indien aX = 1, dan TRUE. Indien aX = -1, dan FALSE. + // Motor PWM + motor1_pwm = fabs(a1); // Range van 0.0f tot 1.0f + motor2_pwm = fabs(a2); +} + + +int main() +{ + motor1_pwm.period_us(60.0); // 60 microseconds PWM period, 16.7 kHz, defines all PWM pins (only needs to done once), FastPWM variabele + MotorInterrupt.attach(Motor, 0.5); // Ticker die de functie Motor aanroept elke halve seconde, meer tijd is tragere respons op potmeter + while(true){} // Endless loop +} \ No newline at end of file