egoShield
|
Public Member Functions | |
egoShield (void) | |
Constructor of egoShield class. More... | |
void | setup (uint16_t acc=1500, uint16_t vel=1000, uint8_t uStep=SIXTEEN, uint16_t fTol=10, uint16_t fHys=5, float P=1.0, float I=0.02, float D=0.006, float res=1, uint16_t shutterDelay=250) |
Initializes buttons, OLED, uStepper and BT-module. More... | |
void | loop (void) |
Contains the main logic of the shield functionality, e.g. transition between states (idle, play, record and pause). | |
Public Attributes | |
uStepper | stepper |
Creates an uStepper instance. | |
Private Member Functions | |
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 | debounce (buttons *btn, uint8_t sample) |
This function handles the debouncing and tracking of whether buttons are pressed, released or held. More... | |
Private Attributes | |
SoftwareSerial * | BTSerial |
U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI * | u8g2 |
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 |
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 | WDT_vect (void) __attribute__((signal |
Watchdog timer interrupt handler, for examining the buttons periodically. More... | |
Definition at line 223 of file egoShieldTimeLapse.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 77 of file egoShieldTimeLapse.cpp.
|
private |
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. |
|
private |
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 807 of file egoShieldTimeLapse.cpp.
|
private |
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 542 of file egoShieldTimeLapse.cpp.
|
private |
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 690 of file egoShieldTimeLapse.cpp.
|
private |
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 636 of file egoShieldTimeLapse.cpp.
|
private |
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 585 of file egoShieldTimeLapse.cpp.
|
private |
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 866 of file egoShieldTimeLapse.cpp.
void egoShield::setup | ( | uint16_t | acc = 1500 , |
uint16_t | vel = 1000 , |
||
uint8_t | uStep = SIXTEEN , |
||
uint16_t | fTol = 10 , |
||
uint16_t | fHys = 5 , |
||
float | P = 1.0 , |
||
float | I = 0.02 , |
||
float | D = 0.006 , |
||
float | res = 1 , |
||
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 82 of file egoShieldTimeLapse.cpp.
|
private |
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 732 of file egoShieldTimeLapse.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 69 of file egoShieldTimeLapse.cpp.
|
private |
This variable holds the acceleration used during playback of the sequence
Definition at line 305 of file egoShieldTimeLapse.h.
|
private |
This variable holds the brake flag
Definition at line 327 of file egoShieldTimeLapse.h.
|
private |
Creates an SoftwareSerial instance for BT-module
Definition at line 275 of file egoShieldTimeLapse.h.
|
private |
This variable holds the current state of the backward button, which tells whether no, short or long push has been detected
Definition at line 301 of file egoShieldTimeLapse.h.
|
private |
This variable holds the PID D term
Definition at line 319 of file egoShieldTimeLapse.h.
|
private |
This variable holds the final step number in the recorded sequence
Definition at line 281 of file egoShieldTimeLapse.h.
|
private |
This variable holds the fault hysteresis setting
Definition at line 313 of file egoShieldTimeLapse.h.
|
private |
This variable holds the fault tolerance setting
Definition at line 311 of file egoShieldTimeLapse.h.
|
private |
This variable holds the current state of the forward button, which tells whether no, short or long push has been detected
Definition at line 299 of file egoShieldTimeLapse.h.
|
private |
This variable holds the interval for timelapse
Definition at line 323 of file egoShieldTimeLapse.h.
|
private |
This variable holds the PID I term
Definition at line 317 of file egoShieldTimeLapse.h.
|
private |
This array indicates whether one of the buttons have experienced a long duration push
Definition at line 291 of file egoShieldTimeLapse.h.
|
private |
This variable indicates whether we are in loop mode during playback
Definition at line 289 of file egoShieldTimeLapse.h.
|
private |
This variable holds the microstepping setting
Definition at line 309 of file egoShieldTimeLapse.h.
|
private |
This variable indicates if PID is enabled
Definition at line 285 of file egoShieldTimeLapse.h.
|
private |
This variable holds the step number in the recorded sequence
Definition at line 279 of file egoShieldTimeLapse.h.
|
private |
This variable holds the current state of the play button, which tells whether no, short or long push has been detected
Definition at line 297 of file egoShieldTimeLapse.h.
|
private |
This array holds the encoder value at the recorded positions
Definition at line 283 of file egoShieldTimeLapse.h.
|
private |
This variable holds the PID P term
Definition at line 315 of file egoShieldTimeLapse.h.
|
private |
This variable holds the current state of the record button, which tells whether no, short or long push has been detected
Definition at line 295 of file egoShieldTimeLapse.h.
|
private |
This variable indicates whether we are recording
Definition at line 287 of file egoShieldTimeLapse.h.
|
private |
This variable holds the resolution deg/mm
Definition at line 325 of file egoShieldTimeLapse.h.
|
private |
This variable holds the current set-point to the PID, either from manual control or during playback of the sequence
Definition at line 303 of file egoShieldTimeLapse.h.
|
private |
This variable holds the value of the delay between motor stops and the shutter fires
Definition at line 334 of file egoShieldTimeLapse.h.
|
private |
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 293 of file egoShieldTimeLapse.h.
|
private |
This variable holds the stepSize for timelapse
Definition at line 321 of file egoShieldTimeLapse.h.
|
private |
Creates an u8g2 (OLED) instance
Definition at line 277 of file egoShieldTimeLapse.h.
|
private |
This variable holds the velocity used during playback of the sequence
Definition at line 307 of file egoShieldTimeLapse.h.