Newer
Older
Malaurie Bernard
committed
#if CORE_MOCK
public:
enum { DRIVER, FULL4WIRE, };
AccelStepper(uint8_t interface = AccelStepper::FULL4WIRE, uint8_t pin1 = 2, uint8_t pin2 = 3, uint8_t pin3 = 4, uint8_t pin4 = 5, bool enable = true) {}
Malaurie Bernard
committed
unsigned long computeNewSpeed () { return 0; }
float maxSpeed () { return 0; }
float acceleration () { return 5; }
long distanceToGo () { return 0; }
Malaurie Bernard
committed
float speed() {return 0;}
};
#else
#include <AccelStepper.h>
#endif

David Gauchard
committed
{
// usefulness: make computeNewSpeed() public to be called outside from interrupt
public:
ISRStepper(uint8_t interface = AccelStepper::FULL4WIRE, uint8_t pin1 = 2, uint8_t pin2 = 3, uint8_t pin3 = 4, uint8_t pin4 = 5, bool enable = true):

David Gauchard
committed
AccelStepper(interface, pin1, pin2, pin3, pin4, enable) { }

David Gauchard
committed
inline unsigned long computeNewSpeed () { return AccelStepper::computeNewSpeed(); }
};
Malaurie Bernard
committed
class Motor
{
public:
Malaurie Bernard
committed
using MotorHardware_t = ISRStepper; //using an instance
Malaurie Bernard
committed
Motor (MotorHardware_t& stepper);
//SETTERS
void set_physical (int steps_per_revolution, float mm_per_revolution, bool clockwise_equals_forward);
Malaurie Bernard
committed
void set_steps_per_revolution(float steps_per_revolution);
void set_mm_per_revolution (float mm_per_revolution);
void set_retain_acceleration_mm_per_sec_per_sec (float acceleration_mm_per_sec_per_sec);
Malaurie Bernard
committed
void set_clockwise_equals_forward (bool forward_clockwise);
void set_speed_mm_per_sec (float mm_per_sec);
//GETTERS
float get_steps_per_revolution();
float get_mm_per_revolution () const;
bool get_clockwise_equals_forward ();
float get_retain_acceleration_mm_per_sec_per_sec () const;
Malaurie Bernard
committed
//CONVERSIONS
float mm_to_step (float mm) const;
float step_to_mm (int step) const;
//MOVEMENTS
void move_to_step_limit_switch (int step);
void move_to_mm_limit_switch (float mm);
Malaurie Bernard
committed
void move_to_step (int step);
void move_to_mm (float mm);
Malaurie Bernard
committed
Malaurie Bernard
committed
void stop ();
Malaurie Bernard
committed
void stay_here ();
void move_step_limit_switch (int step);
void move_mm_limit_switch (float mm);
void move_step (int step);
void move_mm (float mm);
Malaurie Bernard
committed
bool motor_is_running ();
//POSITION
int where_step ();
int where_mm ();
void reset_position();
//CONFIGURATION
void show_configuration ();
int _steps_per_revolution = -1;
float _mm_per_revolution = -1;
float _retain_acceleration_mm_per_sec_per_sec = -1; //Useful for the limit switch
Malaurie Bernard
committed
bool _clockwise_equals_forward;
Malaurie Bernard
committed
extern ISRStepper stepper;