From 99aafb06bf4125e79374800f6a8fbb2d6226bd69 Mon Sep 17 00:00:00 2001 From: Ronald Schaten Date: Sat, 12 Feb 2022 01:03:46 +0100 Subject: [PATCH] refactor --- PhotoStepper/Jogrunner.cpp | 39 +++++++++++++++++++++++++++++++++++ PhotoStepper/Jogrunner.h | 25 ++++++++++++++++++++++ PhotoStepper/PhotoStepper.ino | 20 ++++++++---------- 3 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 PhotoStepper/Jogrunner.cpp create mode 100644 PhotoStepper/Jogrunner.h diff --git a/PhotoStepper/Jogrunner.cpp b/PhotoStepper/Jogrunner.cpp new file mode 100644 index 0000000..ecdf29f --- /dev/null +++ b/PhotoStepper/Jogrunner.cpp @@ -0,0 +1,39 @@ +#include "Arduino.h" +#include +#include + +#include "Jogrunner.h" + +Jogrunner::Jogrunner(LiquidCrystal *lcd, BasicStepperDriver *stepper, int stepper_rpm) { + _lcd = lcd; + _stepper = stepper; + _stepper_rpm = stepper_rpm; +} + +void Jogrunner::start() { + _lcd->clear(); + _lcd->print("Jogging..."); + _lcd->setCursor(0, 1); + _lcd->print("[sel] to return"); +} + +void Jogrunner::setSpeed(bool speed) { + if (speed == LOW) { + _stepper->setRPM(_stepper_rpm); + } else { + _stepper->setRPM(2 * _stepper_rpm); + } +} + +void Jogrunner::stop() { + _stepper->stop(); + setSpeed(LOW); +} + +void Jogrunner::forward() { + _stepper->startMove(100 * 360); +} + +void Jogrunner::backward() { + _stepper->startMove(-100 * 360); +} diff --git a/PhotoStepper/Jogrunner.h b/PhotoStepper/Jogrunner.h new file mode 100644 index 0000000..a82d6ba --- /dev/null +++ b/PhotoStepper/Jogrunner.h @@ -0,0 +1,25 @@ +#ifndef Jogrunner_h +#define Jogrunner_h + +#include "Arduino.h" +#include +#include + +class Jogrunner { + + public: + Jogrunner(LiquidCrystal *lcd, BasicStepperDriver *stepper, int stepper_rpm); + void start(); + void setSpeed(bool speed); + void stop(); + void forward(); + void backward(); + + private: + LiquidCrystal *_lcd; + BasicStepperDriver *_stepper; + int _stepper_rpm; + +}; + +#endif diff --git a/PhotoStepper/PhotoStepper.ino b/PhotoStepper/PhotoStepper.ino index 1c3e595..31b58fc 100644 --- a/PhotoStepper/PhotoStepper.ino +++ b/PhotoStepper/PhotoStepper.ino @@ -17,6 +17,7 @@ #include #include #include +#include "Jogrunner.h" #include "Scenerunner.h" // analog keypad @@ -62,6 +63,7 @@ BasicStepperDriver stepper(STEPPER_STEPS, PIN_STEPPER_DIR, PIN_STEPPER_STEP); enum State { STATE_MENU, STATE_JOG, STATE_RUN }; State state = STATE_MENU; +Jogrunner jogrunner(&lcd, &stepper, STEPPER_RPM); Scenerunner scenerunner(&lcd, &stepper, PIN_CAMERA_FOCUS, PIN_CAMERA_SHUTTER, PIN_LCD_BL); // === @@ -71,11 +73,8 @@ Scenerunner scenerunner(&lcd, &stepper, PIN_CAMERA_FOCUS, PIN_CAMERA_SHUTTER, PI result enter_jog() { Serial.println("enter_jog()"); - lcd.clear(); - lcd.print("Jogging..."); - lcd.setCursor(0, 1); - lcd.print("[sel] to exit"); state = STATE_JOG; + jogrunner.start(); return proceed; } @@ -170,29 +169,28 @@ void ButtonHandler_jog(const ButtonParam& param) { break; case ButtonState_Up: Serial.println("Up"); - stepper.stop(); - stepper.setRPM(STEPPER_RPM); + jogrunner.stop(); break; case ButtonState_Down: Serial.println("Down"); switch (param.button) { case KEY_UP: - stepper.startMove(100 * 360); + jogrunner.forward(); break; case KEY_DOWN: - stepper.startMove(-100 * 360); + jogrunner.backward(); break; } break; case ButtonState_Hold: Serial.println("Hold"); - stepper.setRPM(2 * STEPPER_RPM); + jogrunner.setSpeed(HIGH); switch (param.button) { case KEY_UP: - stepper.startMove(100 * 360); + jogrunner.forward(); break; case KEY_DOWN: - stepper.startMove(-100 * 360); + jogrunner.backward(); break; } break;