diff --git a/motor.cpp b/motor.cpp index 129c90613a774f86e08deda5eb46e35fea3b9898..98bcb50a285135c074754b9973506a5a927a14fb 100644 --- a/motor.cpp +++ b/motor.cpp @@ -3,7 +3,7 @@ //CONSTRUCTORS Motor :: Motor (MotorHardware_t& stepper): stepper(stepper) { - set_physical(300,300, 1); + set_speed_mm_per_sec(1); set_accel_mm_per_sec_per_sec(0.5); // <----- this is not yet configured by user } @@ -111,6 +111,22 @@ void Motor :: move_to_step (int step) Serial.printf("# move to: %d step %g mm\n", step, step_to_mm(step)); } +void Motor :: move_step (int step) +/*** +-Argument : Number of step. +-Return : / +-Action : Move the number of step required. +***/ +{ +#if !CORE_MOCK + cli(); + if (_mm_per_revolution > 0 && _steps_per_revolution > 0) + stepper.moveTo(_clockwise_equals_forward? step: -step); + sei(); +#endif + Serial.printf("# move to: %d step %g mm\n", step, step_to_mm(step)); +} + void Motor :: move_to_mm (float mm) /*** -Argument : distance in mm @@ -124,6 +140,20 @@ void Motor :: move_to_mm (float mm) move_to_step(mm_to_step(mm)); } +void Motor :: move_mm (float mm) +/*** +-Argument : distance in mm +-Return : / +-Action : Move to the distance required. +***/ +{ + Serial.printf("# moving to %g mm / %g steps\n", + mm, + mm_to_step(mm)); + move_step(mm_to_step(mm)); +} + + void Motor :: stop () /*** -Argument : / diff --git a/motor.h b/motor.h index c1dda505161fc7b244295316379e91bc5cc1d768..b6a142b298208cd17eeb44b74464f205e2412dcf 100644 --- a/motor.h +++ b/motor.h @@ -64,7 +64,9 @@ public: //MOVEMENTS void move_to_step (int step); + void move_step (int step); void move_to_mm (float mm); + void move_mm (float mm); void stop (); void stay_here (); bool motor_is_running (); diff --git a/web.cpp b/web.cpp index a06496df7d5bf3791a05310dc6385ca839f40dc6..d95aaeec246b1fc15376b44690f8febcd603df40 100644 --- a/web.cpp +++ b/web.cpp @@ -31,6 +31,12 @@ void web_setup () //***Initialisation***// calibration = ESPUI.button("Callibration", calibration_callback, ControlColor::None, "Lancer"); + fast_backward = ESPUI.button("Initialisation", fast_backward_callback, ControlColor::None, "Reculer rapidement"); + fast_forward = ESPUI.addControl(ControlType::Button, "Initialisation", "Avancer rapidement", ControlColor::None, fast_backward, fast_forward_callback); + slow_backward = ESPUI.addControl(ControlType::Button, "Initialisation", "Reculer doucement", ControlColor::None, fast_backward, slow_backward_callback); + slow_forward = ESPUI.addControl(ControlType::Button, "Initialisation", "Avancer doucement", ControlColor::None, fast_backward, slow_forward_callback); + + ESPUI.addControl(ControlType::Separator, "", "", ControlColor::None); //Remaning_volume label_remaining_volume_mL = ESPUI.label("Volume restant en mL", ControlColor::None, "Volume restant en mL"); @@ -112,7 +118,6 @@ void number_callback(Control* sender, int type) } - //SPECIFIC CALLBACKS// //***ABOVE***// @@ -184,6 +189,115 @@ void calibration_callback (Control *sender, int type) } } +void fast_backward_callback (Control *sender, int type) +/*** +-Argument : Pointer to the controller calling the function, integer according to the controller type. +-Return : / +-Action : +***/ +{ + switch (type) + { + case B_DOWN: + + Serial.printf("Backward 10 steps"); + syringe_filled.reset_position(); + syringe_filled.move_mm(-50); + syringe_filled.set_speed_mm_per_sec(50); + syringe_filled.set_accel_mm_per_sec_per_sec(10); + + break; + + case B_UP: + + syringe_filled.stop(); + + break; + } +} + +void fast_forward_callback (Control *sender, int type) +/*** +-Argument : Pointer to the controller calling the function, integer according to the controller type. +-Return : / +-Action : +***/ +{ + + switch (type) + { + case B_DOWN: + + Serial.printf("Forward 10 steps"); + syringe_filled.reset_position(); + syringe_filled.move_mm(50); + syringe_filled.set_speed_mm_per_sec(50); + syringe_filled.set_accel_mm_per_sec_per_sec(10); + + break; + + case B_UP: + + syringe_filled.stop(); + + break; + } +} + +void slow_backward_callback (Control *sender, int type) +/*** +-Argument : Pointer to the controller calling the function, integer according to the controller type. +-Return : / +-Action : +***/ +{ + switch (type) + { + case B_DOWN: + + Serial.printf("Backward 1 step"); + syringe_filled.reset_position(); + syringe_filled.move_mm(-50); + syringe_filled.set_speed_mm_per_sec(0.5); + syringe_filled.set_accel_mm_per_sec_per_sec(0.2); + + break; + + case B_UP: + + syringe_filled.stop(); + + break; + } +} + +void slow_forward_callback (Control *sender, int type) +/*** +-Argument : Pointer to the controller calling the function, integer according to the controller type. +-Return : / +-Action : +***/ +{ + switch (type) + { + case B_DOWN: + + Serial.printf("Forward 1 step"); + syringe_filled.reset_position(); + syringe_filled.move_mm(50); + syringe_filled.set_speed_mm_per_sec(0.5); + syringe_filled.set_accel_mm_per_sec_per_sec(0.2); + + break; + + case B_UP: + + syringe_filled.stop(); + + break; + } +} + void volume_exchange_mL_callback (Control* sender, int value, void* param) /*** -Argument : Pointer to the controller calling the function, integer according to the controller type. @@ -565,6 +679,11 @@ void set_init_style() style (syringe_filled_placement, 2); style (calibration, 2); + style (fast_forward, 3); + style (fast_backward, 3); + style (slow_forward, 3); + style (slow_backward, 3); + style (volume_exchange_mL_label, 1); style (volume_exchange_mL, 1); diff --git a/web.h b/web.h index de1b94e8341ab70b594b079e032e37c3644b25f9..50febad9ccaf1ef1b36617afd9b7fec042116d9e 100644 --- a/web.h +++ b/web.h @@ -25,7 +25,7 @@ uint16_t activation_syringe_pump; int status_syringe_filled; uint16_t syringe_filled_placement; -uint16_t calibration; +uint16_t calibration, fast_backward, fast_forward, slow_backward, slow_forward; uint16_t volume_exchange_mL_label, volume_exchange_mL, exchange_throughtput_uL_per_sec_label, exchange_throughtput_uL_per_sec, label_push_pull_choice, switch_push_pull_choice; @@ -85,6 +85,10 @@ void number_callback(Control* sender, int type); void activation_syringe_pump_callback (Control* sender, int value, void* param); void syringe_filled_placement_callback (Control* sender, int value, void* param); void calibration_callback(Control* sender, int type); +void fast_backward_callback (Control *sender, int type); +void fast_forward_callback (Control *sender, int type); +void slow_backward_callback (Control *sender, int type); +void slow_forward_callback (Control *sender, int type); void volume_exchange_mL_callback (Control* sender, int value, void* param); void exchange_throughtput_uL_per_sec_callback (Control* sender, int value, void* param); void switch_push_pull_choice_callback (Control* sender, int value, void* param);