niet werkend
Dependencies: mbed QEI HIDScope biquadFilter MODSERIAL FastPWM
Diff: main.cpp
- Revision:
- 10:59ca23f66884
- Parent:
- 9:6537eead1241
--- a/main.cpp Sat Oct 05 16:38:45 2019 +0000 +++ b/main.cpp Mon Oct 07 09:12:34 2019 +0000 @@ -11,7 +11,7 @@ Ticker loop_ticker; //used in main() AnalogIn Pot1(A1); //pot 1 op biorobotics shield AnalogIn Pot2(A0); //pot 2 op biorobotics shield -InterruptIn but1(D10); //knop 1 op birorobotics shield +InterruptIn but1(D10); //knop 1 op birorobotics shield InterruptIn but2(D9); //knop 1 op birorobotics shield QEI encoder1 (D11, D12, NC, 8400, QEI::X4_ENCODING); //encoder 1 gebruiken QEI encoder2 (D1, D2, NC, 8400, QEI::X4_ENCODING); //encoder 2 gebruiken @@ -22,14 +22,13 @@ class motor_state { // Een emmer met variabelen die je hierna motor gaat noemen. public: //Wat is public? - float pwm1; //pwm of 1st motor - float pwm2; //pwm of 2nd motor + float dutycycle1; //pwm of 1st motor + float dutycycle2; //pwm of 2nd motor int dir1; //direction of 1st motor int dir2; //direction of 2nd motor - float speed1; // speed motor 1 - double speed2; // speed motor 2 + }; -motor_state motor; //Een emmer met variabelen met motor.iets als naam bijv. motor.speed1 +motor_state motor; //Een emmer met variabelen met motor.iets als naam bijv. motor.dutycycle1 bool state_changed = false; volatile bool but1_pressed = false; @@ -60,12 +59,10 @@ robot_kinematics() // hoe dat dit precies moet geen idee. Dit lijkt me een goed begin of iig een begin x_movement = 0; y_movement = 0; - - +} -} void robot_kinematics() { //hoe de motoren moeten draaien als er een x of y richting als input is. - [motor.dir1, motor.dir2; motor.speed1, motor.speed2] = H^-1 *[x_movement, y_movement; angle] // Zoiets + [motor.dir1, motor.dir2; motor.dutycycle1, motor.dutycycle2] = H^-1 *[x_movement, y_movement; angle] // Zoiets } @@ -96,18 +93,19 @@ */ pot_1 = Pot1.read(); - pc.printf("pot_1 = %f",pot_1); // Dit doet hij niet, waarom niet? Er scheelt niet veel aan, maar toch - motor.speed1 = pot_1*0.75; //pod_read * 0.75 (dus max 75%) + pot_1 = 1; + /// pc.printf("pot_1 = %f",pot_1); // Dit doet hij niet, waarom niet? Er scheelt niet veel aan, maar toch + motor.dutycycle1 = pot_1*0.75; //pod_read * 0.75 (dus max 75%) pot_2 = Pot2.read(); - pc.printf("pot_2 = %f",pot_2); // Dit doet hij niet, waarom niet? Er scheelt niet veel aan, maar toch - motor.speed2 = pot_2*0.75; //pod_read * 0.75 (dus max 75%) + /// pc.printf("pot_2 = %f",pot_2); // Dit doet hij niet, waarom niet? Er scheelt niet veel aan, maar toch + motor.dutycycle2 = pot_1*0.75; //pod_read * 0.75 (dus max 75%) return; } void do_nothing() { - motor.speed1 = 0; - motor.speed2 = 0; + motor.dutycycle1 = 0; + motor.dutycycle2 = 0; if (but1_pressed == true) { //this moves the program from the idle to cw state current_state = cw; @@ -141,8 +139,9 @@ pc.printf("State changed to CCW\r\n"); state_changed = false; } - motor.dir1 = 0; - motor.dir2 = 0; + + motor.dir1 = 1; + motor.dir2 = 1; if (!state_changed && but1_pressed) { //state niet veranderd, button 1 gepressd -> state verandert current_state = cw; @@ -152,13 +151,13 @@ } void motor_controller() { - motor1_pwm.period(0.0000625f); // 1/frequency van waarop hij draait + motor1_pwm.period(0.0000625f); // 1/frequency van waarop hij draait motor1_direction = motor.dir1; // Zet de richting goed - motor1_pwm.write(motor.speed1); // Zet het op de snelheid van motor.speed1 + motor1_pwm.write(motor.dutycycle1); // Zet het op de snelheid van motor.dutycycle1 motor2_pwm.period(0.0000625f); // 1/frequency van waarop hij draait motor2_direction = motor.dir2; - motor2_pwm.write(motor.speed2); + motor2_pwm.write(motor.dutycycle2); return; }