Lydia - Printhead
StepperController Class Reference

#include <StepperController.h>

Inheritance diagram for StepperController:
[legend]

Classes

struct  StepperControllerParams
 

Public Types

enum  MOTOR_STATUS {
  MOTOR_RUNNING, MOTOR_IDLE, MOTOR_OVERLOAD, MOTOR_ERROR,
  MOTOR_UNKNOWN
}
 

Public Member Functions

short debug ()
 
short dir (short val0, short val1)
 
short getSpeed ()
 
short info ()
 
bool isOverloaded ()
 
short loop ()
 
short onRegisterMethods (Bridge *bridge)
 
short pulseWidth (short val0, short val1)
 
short setup ()
 
short speed (short val0, short val1=0)
 
 StepperController (Component *owner, short dirPin, short pulsePin, short feedbackPin, short overloadPin, short enabled, short speed, short pulseWidth, short dir, short id, short addressStart)
 

Private Attributes

short _addressStart
 
short _dir
 
short _dirPin
 
short _enabled
 
short _feedback
 
short _overload
 
short _pulsePin
 
short _pulseWidth
 
short _speed
 
short _status
 
AccelStepper stepper
 

Detailed Description

Definition at line 19 of file StepperController.h.

Member Enumeration Documentation

◆ MOTOR_STATUS

Enumerator
MOTOR_RUNNING 
MOTOR_IDLE 
MOTOR_OVERLOAD 
MOTOR_ERROR 
MOTOR_UNKNOWN 

Definition at line 23 of file StepperController.h.

24  {
26  MOTOR_IDLE,
30  };

Constructor & Destructor Documentation

◆ StepperController()

StepperController::StepperController ( Component *  owner,
short  dirPin,
short  pulsePin,
short  feedbackPin,
short  overloadPin,
short  enabled,
short  speed,
short  pulseWidth,
short  dir,
short  id,
short  addressStart 
)
inline

Definition at line 47 of file StepperController.h.

58  : ModbusValue<int[]>(addressStart),
59  Component("Stepper", id, Component::COMPONENT_DEFAULT, owner),
60  stepper(AccelStepper::DRIVER, pulsePin, dirPin),
61  _speed(speed),
63  _feedback(feedbackPin),
64  _overload(overloadPin),
65  _enabled(enabled),
66  _dir(dir),
67  _dirPin(dirPin),
68  _pulsePin(pulsePin),
69  _addressStart(addressStart),
70  _status(MOTOR_STATUS::MOTOR_RUNNING)
71  {
72  //setFlag(OBJECT_RUN_FLAGS::E_OF_DEBUG);
73  SBI(nFlags, OBJECT_NET_CAPS::E_NCAPS_MODBUS);
74  Log.verboseln("stepper controller created");
75  }

Member Function Documentation

◆ debug()

short StepperController::debug ( )
inline

Definition at line 114 of file StepperController.h.

114  {
115  Log.verboseln("StepperController::debug Speed=%d | Dir=%d | Address=%d | Status=%d | Load=%d", _speed, _dir, addr, _status, analogRead(_overload));
116  return E_OK;
117  }

◆ dir()

short StepperController::dir ( short  val0,
short  val1 
)
inline

Definition at line 87 of file StepperController.h.

88  {
89  _dir = val0;
90  return E_OK;
91  }

◆ getSpeed()

short StepperController::getSpeed ( )
inline

Definition at line 84 of file StepperController.h.

84  {
85  return _speed;
86  }

◆ info()

short StepperController::info ( )
inline

Definition at line 118 of file StepperController.h.

119  {
120  // Log.verboseln(F("StepperController::debug Speed=%d | Dir=%d | Address=%d | Status=%d" CR), _speed, _dir, addr, _status);
121  return E_OK;
122  }

◆ isOverloaded()

bool StepperController::isOverloaded ( )
inline

Definition at line 158 of file StepperController.h.

159  {
160  return analogRead(_overload) > STEPPER_OVERLOAD_THRESHOLD_0;
161  }

◆ loop()

short StepperController::loop ( )
inline

Definition at line 123 of file StepperController.h.

124  {
125  short netSpeed = clamp<short>(netVal(addr), 0, STEPPER_MAX_SPEED_0);
126  short netDir = clamp<short>(netVal(addr + MB_RW_STEPPER_DIR_OFFSET), 0, 1);
127  short netStatus = netVal(addr + MB_RW_STEPPER_STATUS_OFFSET);
128  short netUser = netVal(addr + MB_RW_STEPPER_USER_OFFSET);
129  if (netSpeed != _speed)
130  {
131  _speed = netSpeed;
132  }
133  if (netDir != _dir)
134  {
135  _dir = netDir;
136  }
137  int range[STEPPER_MODUBUS_RANGE] = {_speed, netDir, netSpeed, 0};
138  onSet(range, STEPPER_MODUBUS_RANGE);
139  stepper.setPinsInverted(_dir, false, false);
140  stepper.setSpeed(_speed * 10);
141  stepper.runSpeed();
142  return E_OK;
143  }

◆ onRegisterMethods()

short StepperController::onRegisterMethods ( Bridge *  bridge)
inline

Definition at line 145 of file StepperController.h.

146  {
147  // bridge->registerMemberFunction(id, this, C_STR("setFlag"), (ComponentFnPtr)&StepperController::setFlag);
148  // bridge->registerMemberFunction(id, this, C_STR("clearFlag"), (ComponentFnPtr)&StepperController::clearFlag);
149  // bridge->registerMemberFunction(id, this, C_STR("info"), (ComponentFnPtr)&StepperController::info);
150  /*
151  bridge->registerMemberFunction(id, this, C_STR("speed"), (ComponentFnPtr)&StepperController::speed);
152  bridge->registerMemberFunction(id, this, C_STR("pulseWidth"), (ComponentFnPtr)&StepperController::pulseWidth);
153  bridge->registerMemberFunction(id, this, C_STR("dir"), (ComponentFnPtr)&StepperController::dir);
154  */
155  return E_OK;
156  }

◆ pulseWidth()

short StepperController::pulseWidth ( short  val0,
short  val1 
)
inline

Definition at line 109 of file StepperController.h.

110  {
111  _pulseWidth = val0;
112  return E_OK;
113  }

◆ setup()

short StepperController::setup ( )
inline

Definition at line 92 of file StepperController.h.

93  {
94  setRegisterMode(MB_REGISTER_MODE::E_MB_REGISTER_MODE_READ_WRITE);
95  setNumberAddresses(STEPPER_MODUBUS_RANGE);
96  setFunctionCode(MB_FC::MB_FC_READ_REGISTERS);
97  setAddress(_addressStart);
98  stepper.setMaxSpeed(STEPPER_MAX_SPEED_0);
99  stepper.setMinPulseWidth(_pulseWidth);
100  stepper.setPinsInverted(_dir, false, false);
101 
102  int range[STEPPER_MODUBUS_RANGE] = {_speed, _dir, _status, analogRead(_overload)};
103  onSet(range, STEPPER_MODUBUS_RANGE);
104  //Log.verboseln("stepper controller setup:%d", _addressStart);
105  //Log.verboseln("stepper controller dir:%d | pulse:%d | speed:%d", _dirPin,_pulsePin, _speed);
106  stepper.setSpeed(_speed);
107  return E_OK;
108  }

◆ speed()

short StepperController::speed ( short  val0,
short  val1 = 0 
)
inline

Definition at line 77 of file StepperController.h.

78  {
79  _speed = val0;
80  int range[STEPPER_MODUBUS_RANGE] = {_speed, _dir, _status, 0};
81  onSet(range, STEPPER_MODUBUS_RANGE);
82  return E_OK;
83  }

Member Data Documentation

◆ _addressStart

short StepperController::_addressStart
private

Definition at line 170 of file StepperController.h.

◆ _dir

short StepperController::_dir
private

Definition at line 166 of file StepperController.h.

◆ _dirPin

short StepperController::_dirPin
private

Definition at line 167 of file StepperController.h.

◆ _enabled

short StepperController::_enabled
private

Definition at line 174 of file StepperController.h.

◆ _feedback

short StepperController::_feedback
private

Definition at line 172 of file StepperController.h.

◆ _overload

short StepperController::_overload
private

Definition at line 173 of file StepperController.h.

◆ _pulsePin

short StepperController::_pulsePin
private

Definition at line 168 of file StepperController.h.

◆ _pulseWidth

short StepperController::_pulseWidth
private

Definition at line 169 of file StepperController.h.

◆ _speed

short StepperController::_speed
private

Definition at line 165 of file StepperController.h.

◆ _status

short StepperController::_status
private

Definition at line 171 of file StepperController.h.

◆ stepper

AccelStepper StepperController::stepper
private

Definition at line 164 of file StepperController.h.


The documentation for this class was generated from the following file:
StepperController::_feedback
short _feedback
Definition: StepperController.h:172
StepperController::MOTOR_OVERLOAD
@ MOTOR_OVERLOAD
Definition: StepperController.h:27
StepperController::_status
short _status
Definition: StepperController.h:171
StepperController::_pulseWidth
short _pulseWidth
Definition: StepperController.h:169
STEPPER_OVERLOAD_THRESHOLD_0
#define STEPPER_OVERLOAD_THRESHOLD_0
Definition: config_adv.h:132
StepperController::MOTOR_ERROR
@ MOTOR_ERROR
Definition: StepperController.h:28
StepperController::_enabled
short _enabled
Definition: StepperController.h:174
MB_RW_STEPPER_DIR_OFFSET
#define MB_RW_STEPPER_DIR_OFFSET
Definition: enums.h:251
StepperController::dir
short dir(short val0, short val1)
Definition: StepperController.h:87
MB_RW_STEPPER_STATUS_OFFSET
#define MB_RW_STEPPER_STATUS_OFFSET
Definition: enums.h:252
StepperController::_dirPin
short _dirPin
Definition: StepperController.h:167
StepperController::_addressStart
short _addressStart
Definition: StepperController.h:170
StepperController::MOTOR_UNKNOWN
@ MOTOR_UNKNOWN
Definition: StepperController.h:29
StepperController::MOTOR_IDLE
@ MOTOR_IDLE
Definition: StepperController.h:26
StepperController::_speed
short _speed
Definition: StepperController.h:165
StepperController::MOTOR_RUNNING
@ MOTOR_RUNNING
Definition: StepperController.h:25
StepperController::_pulsePin
short _pulsePin
Definition: StepperController.h:168
STEPPER_MODUBUS_RANGE
#define STEPPER_MODUBUS_RANGE
Definition: config_adv.h:128
StepperController::_overload
short _overload
Definition: StepperController.h:173
MB_RW_STEPPER_USER_OFFSET
#define MB_RW_STEPPER_USER_OFFSET
Definition: enums.h:253
StepperController::stepper
AccelStepper stepper
Definition: StepperController.h:164
E_OK
#define E_OK
Definition: enums.h:11
StepperController::speed
short speed(short val0, short val1=0)
Definition: StepperController.h:77
StepperController::_dir
short _dir
Definition: StepperController.h:166
STEPPER_MAX_SPEED_0
#define STEPPER_MAX_SPEED_0
Definition: config_adv.h:127
StepperController::pulseWidth
short pulseWidth(short val0, short val1)
Definition: StepperController.h:109