![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
using potmeters as setpoint
Dependencies: Encoder HIDScope MODSERIAL mbed
Revision 2:ee58b6e8eb67, committed 2015-09-23
- Comitter:
- Vigilance88
- Date:
- Wed Sep 23 09:21:36 2015 +0000
- Parent:
- 1:e0c4625bbbab
- Commit message:
- pcontrol test
Changed in this revision
MODSERIAL.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r e0c4625bbbab -r ee58b6e8eb67 MODSERIAL.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MODSERIAL.lib Wed Sep 23 09:21:36 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/Sissors/code/MODSERIAL/#6ffa97119f4f
diff -r e0c4625bbbab -r ee58b6e8eb67 main.cpp --- a/main.cpp Sun Sep 20 16:31:03 2015 +0000 +++ b/main.cpp Wed Sep 23 09:21:36 2015 +0000 @@ -1,26 +1,73 @@ #include "mbed.h" #include "encoder.h" +#include "MODSERIAL.h" - -Encoder encoder1(D13,D12); -DigitalOut motor2direction(D4); //D4 en D5 zijn motor 2 (op het motorshield) -PwmOut motor2speed(D5); - - -int main() +volatile bool looptimerflag; + +void setlooptimerflag(void) { - int position = encoder1.getPosition(); - Serial pc(USBTX,USBRX); + looptimerflag = true; +} + +int main(){ + //VARIABLES + AnalogIn potmeter(A1); + AnalogIn potmeter2(A0); + DigitalIn button(D8); + MODSERIAL pc(USBTX,USBRX); + + Encoder motor1(D13,D12,true); // channel A and B from encoder, true - getSpeed works + PwmOut pwm_motor1(D6); // D4 and D5 = motor 2, D7 and D6 = motor 2 + DigitalOut dir_motor1(D7); // + + Encoder motor2(D10,D9,true); // channel A and B from encoder, true - getSpeed works + PwmOut pwm_motor2(D5); // D4 and D5 = motor 2, D7 and D6 = motor 2 + DigitalOut dir_motor2(D4); // + + // MOTOR1 + float goal; + float pwm_to_motor; + // MOTOR2 + float goal2; + float pwm_to_motor2; + + //CODE pc.baud(9600); - motor2speed=0.0f; - motor2direction=1; - - if(stop_knop.read() == 0) { - motor2speed=0.0f; - } - while (true) { + //pwm_motor1.write(0.2f); // Speed + //dir_motor1.write(1); // Direction + + Ticker looptimer; + looptimer.attach(setlooptimerflag,0.01); + + while (1) { + while(looptimerflag != true); + looptimerflag = false; - pc.printf("pos: %d, speed %f \r\n",encoder1.getPosition(), encoder1.getSpeed()); + //MOTOR1 + goal = (potmeter.read()-0.5)*4200; + pc.printf("setpoint: %f, %d, %f \n\r", goal, motor1.getPosition(),motor1.getSpeed()); + pwm_to_motor = (goal - motor1.getPosition())*.001; + + if(pwm_to_motor > 0) + dir_motor1 = 0; + else + dir_motor1 = 1; + + pwm_motor1.write(abs(pwm_to_motor)); + + //MOTOR2 + goal2 = (potmeter2.read()-0.5)*4200; + //pc.printf("setpoint: %f, %d, %f \n\r", goal2, motor2.getPosition(),motor2.getSpeed()); + pwm_to_motor2 = (goal2 - motor2.getPosition())*.001; + + if(pwm_to_motor2 > 0) + dir_motor2 = 0; + else + dir_motor2 = 1; + + pwm_motor2.write(abs(pwm_to_motor2)); + + } } \ No newline at end of file