egoShield
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
egoShield Class Reference
Inheritance diagram for egoShield:
egoShieldTeach egoShieldTimeLapse

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

Screenscreen
 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...
 

Detailed Description

Definition at line 177 of file egoShieldS.h.

Constructor & Destructor Documentation

◆ egoShield()

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.

Member Function Documentation

◆ buttonState()

uint8_t egoShield::buttonState ( uint8_t  button,
uint8_t  nmbr 
)
protected

Returns the button state of the appropriate button.

Parameters
[in]buttonis set to either of the four available buttons.
[in]nmbris used for indexing in the longPushFlag array.
Returns
0 - no push detected.
1 - short push detected.
2 - long push detected.

◆ idlePage()

void egoShield::idlePage ( bool  pidMode,
float  pos 
)
protected

Holds the code for the idle page of the OLED.

Parameters
[in]pidModetells if the display should show PID ON or PID OFF.
[in]posis the encoder position to be displayed.

Definition at line 711 of file egoShieldS.cpp.

◆ pausePage()

void egoShield::pausePage ( bool  loopMode,
bool  pidMode,
uint8_t  index 
)
protected

Holds the code for the pause page of the OLED.

Parameters
[in]loopModetells if the display should show loop symbol.
[in]pidModetells if the display should show PID ON or PID OFF.
[in]indextells which step we are at.

Definition at line 990 of file egoShieldS.cpp.

◆ playPage()

void egoShield::playPage ( bool  loopMode,
bool  pidMode,
uint8_t  index,
bool  mode 
)
protected

Holds the code for the play page of the OLED.

Parameters
[in]loopModetells if the display should show loop symbol.
[in]pidModetells if the display should show PID ON or PID OFF.
[in]indextells which step we are at.

Definition at line 871 of file egoShieldS.cpp.

◆ recordMode()

void egoShield::recordMode ( void  )
protected

This function handles the debouncing and tracking of whether buttons are pressed, released or held.

Parameters
[in]btnis a pointer to the struct off the button currently being examined
[in]sampleis a representation of the current button IO state

Definition at line 186 of file egoShieldS.cpp.

◆ recordPage()

void egoShield::recordPage ( bool  pidMode,
bool  recorded,
uint8_t  index,
float  pos 
)
protected

Holds the code for the record page of the OLED.

Parameters
[in]pidModetells if the display should show PID ON or PID OFF.
[in]recordedtells if a step has been recorded.
[in]indextells which step we are at.
[in]posis the encoder position to be displayed.

Definition at line 776 of file egoShieldS.cpp.

◆ resetButton()

void egoShield::resetButton ( buttons btn)
protected

Function for resetting the state of a button seperately.

Parameters
[in]btnis a Pointer to the button struct variable needed to be reset

Definition at line 1272 of file egoShieldS.cpp.

◆ setup()

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.

Parameters
[in]acctakes in the maximum acceleration in play mode.
[in]veltakes in the maximum velocity in play mode.
[in]uSteptakes in the microstepping setting.
[in]fToltakes in the fault tolerance for the PID in steps, i.e. how much error is allowed before correction.
[in]fHystakes fault hysteresis in steps, i.e. when is the PID deactivated again.
[in]Ptakes in the PID P term.
[in]Itakes in the PID I term.
[in]Dtakes in the PID D term.
[in]restakes in the resolution of the drive in deg/mm.
[in]shutterDelayin milliseconds between motor stopped and shutter fires.

Definition at line 53 of file egoShieldS.cpp.

◆ timePage()

void egoShield::timePage ( uint8_t  step,
bool  pidMode 
)
protected

Holds the code for the timelapse page of the OLED.

Parameters
[in]pidModetells if the display should show PID ON or PID OFF.
[in]steptells which step we are at in the timelapse mode.

Definition at line 1056 of file egoShieldS.cpp.

Friends And Related Function Documentation

◆ TIMER4_COMPA_vect

void TIMER4_COMPA_vect ( void  )
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.

Member Data Documentation

◆ acceleration

uint16_t egoShield::acceleration
protected

This variable holds the acceleration used during playback of the sequence

Definition at line 264 of file egoShieldS.h.

◆ brakeFlag

bool egoShield::brakeFlag
protected

This variable holds the brake flag

Definition at line 288 of file egoShieldS.h.

◆ bw

uint8_t egoShield::bw
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 260 of file egoShieldS.h.

◆ dTerm

float egoShield::dTerm
protected

This variable holds the PID D term

Definition at line 278 of file egoShieldS.h.

◆ endmove

uint8_t egoShield::endmove
protected

This variable holds the final step number in the recorded sequence

Definition at line 240 of file egoShieldS.h.

◆ faultHysteresis

uint16_t egoShield::faultHysteresis
protected

This variable holds the fault hysteresis setting

Definition at line 272 of file egoShieldS.h.

◆ faultTolerance

uint16_t egoShield::faultTolerance
protected

This variable holds the fault tolerance setting

Definition at line 270 of file egoShieldS.h.

◆ fw

uint8_t egoShield::fw
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 258 of file egoShieldS.h.

◆ interval

uint16_t egoShield::interval
protected

This variable holds the interval for timelapse

Definition at line 282 of file egoShieldS.h.

◆ iTerm

float egoShield::iTerm
protected

This variable holds the PID I term

Definition at line 276 of file egoShieldS.h.

◆ lastPage

uint8_t egoShield::lastPage = NOPAGE
protected

Creates an SoftwareSerial instance for BT-module

Definition at line 236 of file egoShieldS.h.

◆ longPushFlag

bool egoShield::longPushFlag[4]
protected

This array indicates whether one of the buttons have experienced a long duration push

Definition at line 250 of file egoShieldS.h.

◆ loopMode

bool egoShield::loopMode
protected

This variable indicates whether we are in loop mode during playback

Definition at line 248 of file egoShieldS.h.

◆ microStepping

uint8_t egoShield::microStepping
protected

This variable holds the microstepping setting

Definition at line 268 of file egoShieldS.h.

◆ pidFlag

bool egoShield::pidFlag
protected

This variable indicates if PID is enabled

Definition at line 244 of file egoShieldS.h.

◆ place

uint8_t egoShield::place
protected

This variable holds the step number in the recorded sequence

Definition at line 238 of file egoShieldS.h.

◆ play

uint8_t egoShield::play
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 256 of file egoShieldS.h.

◆ pos

float egoShield::pos[CNT]
protected

This array holds the encoder value at the recorded positions

Definition at line 242 of file egoShieldS.h.

◆ pTerm

float egoShield::pTerm
protected

This variable holds the PID P term

Definition at line 274 of file egoShieldS.h.

◆ rec

uint8_t egoShield::rec
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 254 of file egoShieldS.h.

◆ record

bool egoShield::record
protected

This variable indicates whether we are recording

Definition at line 246 of file egoShieldS.h.

◆ resolution

float egoShield::resolution
protected

This variable holds the resolution deg/mm

Definition at line 284 of file egoShieldS.h.

◆ screen

Screen* egoShield::screen
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 233 of file egoShieldS.h.

◆ setPoint

float egoShield::setPoint
protected

This variable holds the current set-point to the PID, either from manual control or during playback of the sequence

Definition at line 262 of file egoShieldS.h.

◆ shutterDelay

uint16_t egoShield::shutterDelay
protected

This variable holds the value of the delay between motor stops and the shutter fires

Definition at line 295 of file egoShieldS.h.

◆ stallSensitivity

int8_t egoShield::stallSensitivity
protected

This variable holds the stall sensitivity level

Definition at line 286 of file egoShieldS.h.

◆ state

char egoShield::state
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 252 of file egoShieldS.h.

◆ stepSize

float egoShield::stepSize
protected

This variable holds the stepSize for timelapse

Definition at line 280 of file egoShieldS.h.

◆ velocity

uint16_t egoShield::velocity
protected

This variable holds the velocity used during playback of the sequence

Definition at line 266 of file egoShieldS.h.


The documentation for this class was generated from the following files: