not working yet
Dependencies: Motor_with_encoder MODSERIAL mbed HIDScope
Diff: main.cpp
- Revision:
- 6:fc46581fe3e0
- Parent:
- 5:8c6d66a7c5da
- Child:
- 7:809f122886ae
- Child:
- 8:9edf32e021a5
- Child:
- 18:5c4e27db4d9e
--- a/main.cpp Fri Oct 20 06:56:35 2017 +0000 +++ b/main.cpp Mon Oct 23 07:48:56 2017 +0000 @@ -10,14 +10,12 @@ PwmOut speed2(D6); DigitalOut dir1(D4); DigitalOut dir2(D7); -DigitalIn but1(PTC6); +DigitalIn press(PTA4); DigitalOut led1(D8); DigitalOut led2(D11); AnalogIn pot(A2); AnalogIn pot2(A1); -Ticker potmeterreadout; -Ticker encoderreadout; -Ticker Frequency; +Ticker mainticker; Encoder motor1(PTD0,PTC4); Encoder motor2(D12,D13); @@ -54,20 +52,17 @@ volatile double position = 0.0; volatile double position2 = 0.0; -bool readoutsetpoint = true; +//bool readoutsetpoint = true; void setpointreadout() { - if (readoutsetpoint == true){ + potvalue = pot.read(); setpoint = potvalue*6.28f; potvalue2 = pot2.read(); setpoint2 = potvalue2*6.28f; - } - else { - readoutsetpoint = false; - } + } @@ -80,11 +75,9 @@ //pc.printf("pos: %d, speed %f reference position = %.2f\r ",motor1.getPosition(), motor1.getSpeed(), setpoint); //motorpid = PID(potvalue - position, M1_KP, M1_KI, M1_KD, M1_TS, m1_err_int, m1_prev_err, m1_f_v1, m1_f_v2, M1_F_A1, M1_F_A2, M1_F_B0, M1_F_B1, M1_F_B2); - - error1 = setpoint - angle; error2 = setpoint2 - angle2; - + changeError = (error1 - last_error)/0.001f; // derivative term totalError += error1*0.001f; //accumalate errors to find integral term pidTerm = (Kp * error1) + (Ki * totalError) + (Kd * changeError);//total gain @@ -137,13 +130,11 @@ int main() { - encoderreadout.attach(PIDcalculation,0.01f); + mainticker.attach(PIDcalculation,0.01f); speed1.period(PwmPeriod); speed2.period(PwmPeriod); - int count = 0; - - + int count = 0; while(true) { count++; @@ -153,20 +144,15 @@ pc.printf("Angle 2 = %f, pidTerm 2 = %f ,PID_scaled 2 = %f, Error 2 = %f, setpoint 2 = %f\r\n", angle2, pidTerm2 ,pidTerm_scaled2, error2,setpoint2); } - if(but1 == 1){ - setpoint = 0; - setpoint2 = 0; - while(error1 >= 0.1f && error2 >= 0.1f){ - - } - readoutsetpoint = true; - } + + wait(0.001f); + } - wait(0.001f); - } + + }