Script voor aansturen motoren
Dependencies: Encoder HIDScope MODSERIAL mbed-dsp mbed
Diff: main.cpp
- Revision:
- 2:11076f69e0a7
- Parent:
- 1:97d6b160f708
- Child:
- 3:dcc4cebba0d7
--- a/main.cpp Tue Oct 21 13:24:23 2014 +0000 +++ b/main.cpp Tue Oct 21 13:48:51 2014 +0000 @@ -10,13 +10,14 @@ #define M1_PWM PTC8 //blauw #define M1_DIR PTC9 //groen -#define M2_PWM PTA5 -#define M2_DIR PTA4 +#define M2_PWM PTA5 //blauw +#define M2_DIR PTA4 //groen - +//#define POT_AVG 50 void clamp(float * in, float min, float max); float pid(float setpoint, float measurement); volatile bool looptimerflag; +//float potsamples[POT_AVG]; HIDScope scope(6); void setlooptimerflag(void) @@ -28,14 +29,22 @@ { //Let op dat de jumpers goed staan als het motortje niet wilt draaien. De E1 jumper moet onder de nummer 7 pin. De locatie van de M1 pin //bepaalt of de motor CW of CCW draait. //start Encoder-> first pin should be PTDx or PTAx, second pin doesn't matter + AnalogIn potmeter(PTC2); Encoder motor1(PTD3,PTD5); //wit, geel - /*PwmOut to motor driver*/ - PwmOut pwm_motor(M1_PWM); // PTC8, blauw - //10kHz PWM frequency - pwm_motor.period_us(75); - DigitalOut motordir(M1_DIR); //PTC9, groen + PwmOut pwm_motor1(M1_PWM); // PTC8, blauw, /*PwmOut to motor driver*/ + pwm_motor1.period_us(75); //10kHz PWM frequency + DigitalOut motordir1(M1_DIR); //PTC9, groen + + + Encoder motor2(PTD2, PTD0); //wit, geel + PwmOut pwm_motor2(M2_PWM); //PTA5, blauw + pwm_motor2.period_us(75); + DigitalOut motordir2(M2_DIR); //PTA4, groen + Ticker looptimer; looptimer.attach(setlooptimerflag,TSAMP); + + while(1) { int16_t setpoint; float new_pwm; @@ -53,10 +62,16 @@ // ch 1, 2 and 3 set in pid controller */ scope.send(); if(new_pwm < 0) - motordir = 0; + motordir1 = 0; else - motordir = 1; - pwm_motor.write(abs(new_pwm)); + motordir1 = 1; + pwm_motor1.write(abs(new_pwm)); + + if(new_pwm < 0) + motordir2 = 0; + else + motordir2 = 1; + pwm_motor2.write(abs(new_pwm)); } }