egoShield
|
Public Member Functions | |
egoShield (void) | |
Constructor of egoShield class. More... | |
void | setup (uint16_t acc=1500, uint16_t vel=100, float P=1.0, float I=0.02, float D=0.006, float res=1, int8_t stallsens=2, uint16_t shutterDelay=250) |
Initializes buttons, OLED, uStepper and BT-module. More... | |
Protected Member Functions | |
unsigned char * | loadVideoBuffer (unsigned char *data, unsigned char length) |
void | resetButton (buttons *btn) |
Function for resetting the state of a button seperately. More... | |
void | resetAllButton () |
Resets the state of all 4 buttons at once. | |
void | inputs (void) |
Reads the four buttons and writes their value; no push, short push or long push, to global variables. | |
uint8_t | buttonState (uint8_t button, uint8_t nmbr) |
Returns the button state of the appropriate button. More... | |
void | idleMode (void) |
Holds the idle logic; page to show, what buttons to enable etc. | |
void | playMode (void) |
Holds the play logic, showing play page and running the recorded sequence. | |
void | pauseMode (void) |
Holds the pause logic, showing the pause page and pausing the playing of a sequence. | |
void | timeMode (void) |
Holds the timelapse logic, showing the timelapse page. | |
void | manForward (void) |
Holds the manual forward logic for driving the stepper motor manually with the pushbuttons. | |
void | manBackward (void) |
Holds the manual backward logic for driving the stepper motor manually with the pushbuttons. | |
void | startPage (void) |
Holds the code for the start page of the OLED. | |
void | idlePage (bool pidMode, float pos) |
Holds the code for the idle page of the OLED. More... | |
void | recordPage (bool pidMode, bool recorded, uint8_t index, float pos) |
Holds the code for the record page of the OLED. More... | |
void | playPage (bool loopMode, bool pidMode, uint8_t index, bool mode) |
Holds the code for the play page of the OLED. More... | |
void | pausePage (bool loopMode, bool pidMode, uint8_t index) |
Holds the code for the pause page of the OLED. More... | |
void | timePage (uint8_t step, bool pidMode) |
Holds the code for the timelapse page of the OLED. More... | |
void | changeVelocity (void) |
Holds the code for the changing velocity during sequence play. | |
void | recordMode (void) |
This function handles the debouncing and tracking of whether buttons are pressed, released or held. More... | |
void | debounce (buttons *btn, uint8_t sample) |
Protected Attributes | |
Screen * | screen |
Contains the main logic of the shield functionality, e.g. transition between states (idle, play, record and pause). More... | |
uint8_t | lastPage = NOPAGE |
uint8_t | place |
uint8_t | endmove |
float | pos [CNT] |
bool | pidFlag |
bool | record |
bool | loopMode |
bool | longPushFlag [4] |
char | state |
uint8_t | rec |
uint8_t | play |
uint8_t | fw |
uint8_t | bw |
float | setPoint |
uint16_t | acceleration |
uint16_t | velocity |
uint8_t | microStepping |
uint16_t | faultTolerance |
uint16_t | faultHysteresis |
float | pTerm |
float | iTerm |
float | dTerm |
float | stepSize |
uint16_t | interval |
float | resolution |
int8_t | stallSensitivity |
bool | brakeFlag |
volatile buttons | forwardBtn = {0x1F, DEPRESSED, 0, 0, 0} |
volatile buttons | playBtn = {0x1F, DEPRESSED, 0, 0, 0} |
volatile buttons | recordBtn = {0x1F, DEPRESSED, 0, 0, 0} |
volatile buttons | backwardsBtn = {0x1F, DEPRESSED, 0, 0, 0} |
uint16_t | shutterDelay |
Friends | |
void | used |
void | TIMER4_COMPA_vect (void) __attribute__((signal |
Watchdog timer interrupt handler, for examining the buttons periodically. More... | |
Definition at line 182 of file egoShieldS.h.
egoShield::egoShield | ( | void | ) |
Constructor of egoShield class.
This is the constructor of the egoShield class. No arguments are present in the constructor.
Definition at line 49 of file egoShieldS.cpp.
|
protected |
Returns the button state of the appropriate button.
[in] | button | is set to either of the four available buttons. |
[in] | nmbr | is used for indexing in the longPushFlag array. |
|
protected |
Holds the code for the idle page of the OLED.
[in] | pidMode | tells if the display should show PID ON or PID OFF. |
[in] | pos | is the encoder position to be displayed. |
Definition at line 713 of file egoShieldS.cpp.
|
protected |
Holds the code for the pause page of the OLED.
[in] | loopMode | tells if the display should show loop symbol. |
[in] | pidMode | tells if the display should show PID ON or PID OFF. |
[in] | index | tells which step we are at. |
Definition at line 992 of file egoShieldS.cpp.
|
protected |
Holds the code for the play page of the OLED.
[in] | loopMode | tells if the display should show loop symbol. |
[in] | pidMode | tells if the display should show PID ON or PID OFF. |
[in] | index | tells which step we are at. |
Definition at line 873 of file egoShieldS.cpp.
|
protected |
This function handles the debouncing and tracking of whether buttons are pressed, released or held.
[in] | btn | is a pointer to the struct off the button currently being examined |
[in] | sample | is a representation of the current button IO state |
Definition at line 189 of file egoShieldS.cpp.
|
protected |
Holds the code for the record page of the OLED.
[in] | pidMode | tells if the display should show PID ON or PID OFF. |
[in] | recorded | tells if a step has been recorded. |
[in] | index | tells which step we are at. |
[in] | pos | is the encoder position to be displayed. |
Definition at line 778 of file egoShieldS.cpp.
|
protected |
Function for resetting the state of a button seperately.
[in] | btn | is a Pointer to the button struct variable needed to be reset |
Definition at line 1274 of file egoShieldS.cpp.
void egoShield::setup | ( | uint16_t | acc = 1500 , |
uint16_t | vel = 100 , |
||
float | P = 1.0 , |
||
float | I = 0.02 , |
||
float | D = 0.006 , |
||
float | res = 1 , |
||
int8_t | stallsens = 2 , |
||
uint16_t | shutterDelay = 250 |
||
) |
Initializes buttons, OLED, uStepper and BT-module.
[in] | acc | takes in the maximum acceleration in play mode. |
[in] | vel | takes in the maximum velocity in play mode. |
[in] | uStep | takes in the microstepping setting. |
[in] | fTol | takes in the fault tolerance for the PID in steps, i.e. how much error is allowed before correction. |
[in] | fHys | takes fault hysteresis in steps, i.e. when is the PID deactivated again. |
[in] | P | takes in the PID P term. |
[in] | I | takes in the PID I term. |
[in] | D | takes in the PID D term. |
[in] | res | takes in the resolution of the drive in deg/mm. |
[in] | shutterDelay | in milliseconds between motor stopped and shutter fires. |
Definition at line 53 of file egoShieldS.cpp.
|
protected |
Holds the code for the timelapse page of the OLED.
[in] | pidMode | tells if the display should show PID ON or PID OFF. |
[in] | step | tells which step we are at in the timelapse mode. |
Definition at line 1058 of file egoShieldS.cpp.
|
friend |
Watchdog timer interrupt handler, for examining the buttons periodically.
The Watchdog is configured to interrupt once every 16ms, to examine the IO state of the buttons, and performing the debouncing. The debouncing algorithm looks at the last five measured IO states of each button individually, to determine whether a button has finished bouncing or not. In order to see if the button is held or just pressed, a counter (seperate for each button) is incremented every time all the last five measurements are identical and if this counter reaches the value "HOLDTIME", the button are considered held. If any IO measurement is different from the last one, the counter is reset.
Definition at line 38 of file egoShieldS.cpp.
|
protected |
This variable holds the acceleration used during playback of the sequence
Definition at line 269 of file egoShieldS.h.
|
protected |
This variable holds the brake flag
Definition at line 293 of file egoShieldS.h.
|
protected |
This variable holds the current state of the backward button, which tells whether no, short or long push has been detected
Definition at line 265 of file egoShieldS.h.
|
protected |
This variable holds the PID D term
Definition at line 283 of file egoShieldS.h.
|
protected |
This variable holds the final step number in the recorded sequence
Definition at line 245 of file egoShieldS.h.
|
protected |
This variable holds the fault hysteresis setting
Definition at line 277 of file egoShieldS.h.
|
protected |
This variable holds the fault tolerance setting
Definition at line 275 of file egoShieldS.h.
|
protected |
This variable holds the current state of the forward button, which tells whether no, short or long push has been detected
Definition at line 263 of file egoShieldS.h.
|
protected |
This variable holds the interval for timelapse
Definition at line 287 of file egoShieldS.h.
|
protected |
This variable holds the PID I term
Definition at line 281 of file egoShieldS.h.
|
protected |
Creates an SoftwareSerial instance for BT-module
Definition at line 241 of file egoShieldS.h.
|
protected |
This array indicates whether one of the buttons have experienced a long duration push
Definition at line 255 of file egoShieldS.h.
|
protected |
This variable indicates whether we are in loop mode during playback
Definition at line 253 of file egoShieldS.h.
|
protected |
This variable holds the microstepping setting
Definition at line 273 of file egoShieldS.h.
|
protected |
This variable indicates if PID is enabled
Definition at line 249 of file egoShieldS.h.
|
protected |
This variable holds the step number in the recorded sequence
Definition at line 243 of file egoShieldS.h.
|
protected |
This variable holds the current state of the play button, which tells whether no, short or long push has been detected
Definition at line 261 of file egoShieldS.h.
|
protected |
This array holds the encoder value at the recorded positions
Definition at line 247 of file egoShieldS.h.
|
protected |
This variable holds the PID P term
Definition at line 279 of file egoShieldS.h.
|
protected |
This variable holds the current state of the record button, which tells whether no, short or long push has been detected
Definition at line 259 of file egoShieldS.h.
|
protected |
This variable indicates whether we are recording
Definition at line 251 of file egoShieldS.h.
|
protected |
This variable holds the resolution deg/mm
Definition at line 289 of file egoShieldS.h.
|
protected |
Contains the main logic of the shield functionality, e.g. transition between states (idle, play, record and pause).
Creates an uStepper instance.
Definition at line 238 of file egoShieldS.h.
|
protected |
This variable holds the current set-point to the PID, either from manual control or during playback of the sequence
Definition at line 267 of file egoShieldS.h.
|
protected |
This variable holds the value of the delay between motor stops and the shutter fires
Definition at line 300 of file egoShieldS.h.
|
protected |
This variable holds the stall sensitivity level
Definition at line 291 of file egoShieldS.h.
|
protected |
This variable holds the current state of the program, which tells whether the program is in idle, play, record or pause mode
Definition at line 257 of file egoShieldS.h.
|
protected |
This variable holds the stepSize for timelapse
Definition at line 285 of file egoShieldS.h.
|
protected |
This variable holds the velocity used during playback of the sequence
Definition at line 271 of file egoShieldS.h.