LedEngine Class Reference#include <LedEngine.h>
Inheritance diagram for LedEngine:
[legend]List of all members.
Detailed Description
Provides basic LED effects to anything that inherits from (recommended method for MotionCommands) or instantiates it (just in case you have reason to).
Provides a collection of special effects so that the code can be reused various places as feedback to to the user.
Cycling ("pulsing") and single-value setting are mutually exclusive; one will cut off the other
A flash will invert and override the current setting, so that it will "reset" after the flash. Flashes change mid-range values to extremes to make the flash visible (ie not just (1-current)) Normal invert will do simple inverses (just (1-current))
getSetting() returns value of last set(); getValue() returns what's actually being returned to Motion at the moment
There's some nice functions for using the LEDs to display numbers. This is handy for when you want to be free of the terminal.
The ERS-220 and ERS-7 have enough LEDs that they just use a "count the lights" style of display instead of this pseudo-arabic display. (look close to see that green bar LED at the top of the 210, which doesn't show up well in the camera image for some reason. )
Definition at line 38 of file LedEngine.h.
|
Public Types |
enum | numStyle_t { onedigit,
twodigit
} |
| Use these to specify a style for displaying numbers using displayNumber(). More...
|
enum | percentStyle_t { major,
minor,
none
} |
| Use these to specify a style for displaying a percentage value [0-1] using displayPercent(). More...
|
Public Member Functions |
| LedEngine () |
| constructor - don't forget to call if you inherit
|
virtual | ~LedEngine () |
| destructor
|
int | updateLEDs (const MotionCommand *caller, LEDBitMask_t mask=AllLEDMask) |
| call this from a MotionCommand's updateOutputs() - makes calls to MotionManager to update LED values
|
int | updateLEDs (OutputCmd cmds[NumLEDs]) |
| call this from a MotionCommand's updateOutputs() - performs the calculations to update LEDs' values
|
int | updateLEDFrames (OutputCmd cmds[NumLEDs][NumFrames]) |
| call this from a MotionCommand's updateOutputs() - performs the calculations to update LEDs' values
|
void | recalcFlashEnd () |
| recalculates nextFlashEnd so we can tell when a flash has completed
|
int | isDirty () |
| returns true if there are changes since the last updateLEDs()
|
void | invert (LEDBitMask_t leds) |
| sets the leds specified by leds to the inverse of their current value
|
void | cset (LEDBitMask_t leds, float value) |
| sets the leds specified by leds to value, clears all the rest
|
void | set (LEDBitMask_t leds, float value) |
| sets the leds specified by leds to value
|
void | cflash (LEDBitMask_t leds, float value, unsigned int ms) |
| sets the leds specified by leds to value for ms milliseconds, then sets back. Clears ~leds
|
void | flash (LEDBitMask_t leds, float value, unsigned int ms) |
| sets the leds specified by leds to value for ms milliseconds, then sets back.
|
void | flash (LEDBitMask_t leds, unsigned int ms) |
| sets the leds specified by leds to either a much higher or much lower value for ms milliseconds, then sets back.
|
void | ccycle (LEDBitMask_t leds, unsigned int period, float amp, float offset=0, int phase=0) |
| causes the leds specified by leds to cycle between low and high, clears others. See cycle() for parameter documentation.
|
void | cycle (LEDBitMask_t leds, unsigned int period, float amp, float offset=0, int phase=0) |
| causes the leds specified by leds to cycle between low and high; values calculated for cycle will be clipped to [0,1] for more sensible blending of square wave approximations (high amplitude sine wave)
|
void | clear () |
| sets all leds to 0.
|
float | getSetting (LEDOffset_t led_id) |
| returns the current setting of the LED specified by led_id (the value you passed in set())
|
float | getValue (LEDOffset_t led_id, unsigned int planahead=0) |
| returns the current value of the LED specified by led_id (the value being expressed - may change if cycling for instance)
|
void | displayNumber (int x, numStyle_t style) |
| Allows convenient display of numerical information to the LEDs on the face.
|
void | displayPercent (float x, percentStyle_t left_style, percentStyle_t right_style) |
| Allows convenient display of percentage information to the LEDs on the face.
|
Static Public Attributes |
static const LEDBitMask_t | ERS210numMasks [11] |
| holds a series of bit masks for the onedigit style of numerical display (0-10 and '.')
|
static const LEDBitMask_t | ERS220numMasks [11] |
| bit masks for the ondigit style of numberical display - just count the LEDs on the head
|
static const LEDBitMask_t | ERS7numMasks [11] |
Protected Member Functions |
float | calcValue (unsigned int i, unsigned int t) |
| Calculates the current value of led i for current time t.
|
void | setOneOfTwo (unsigned int x, unsigned int low, unsigned int mid, unsigned int high) |
| used by displayNumber() to determine settings of LEDs when using #numStyle_t::twodigit
|
void | setColumn (float x, unsigned int low, unsigned int mid, unsigned int high, unsigned int top) |
| used by displayPercent() to determine settings of LEDs
|
Static Protected Member Functions |
static float | calcInvert (float value) |
| Performs the 'invert' calculation based on current value (returns 1-value).
|
static float | calcFlash (float value) |
| Performs the 'flash' calculation based on current value (uses calcInvert() if value upper or lower third, 0 or 1 otherwise).
|
static float | calcCycle (unsigned int period, float amp, float offset, unsigned int t) |
| Performs the 'cycle' calculation based on desired period, amplituted, amplitude offset, and time since start. See cycle().
|
Protected Attributes |
LEDInfo | infos [NumLEDs] |
| the information regarding each of the LEDs
|
bool | dirty |
| true if changes since last updateLEDs: either at least one LED is cycling or a flash has begun/ended
|
unsigned int | numCycling |
| the number of LEDs currently cycling (if non-zero, always dirty)
|
unsigned int | nextFlashEnd |
| the soonest time a flash will end (and we'll become dirty)
|
Classes |
struct | LEDInfo |
| Holds all the information needed by each of the LEDs. More...
|
Member Enumeration Documentation
|
Use these to specify a style for displaying numbers using displayNumber().
- Enumeration values:
-
onedigit |
can display a number -9 thru 9, using #numMask. For negative numbers, blinks the top bar - fast if it's supposed to be on, slow if it would otherwise be off |
twodigit |
can display a number -99 thru 99, using setOneOfTwo(). For negative numbers, sets the top bar to 1 (off otherwise). |
Definition at line 95 of file LedEngine.h. |
|
Use these to specify a style for displaying a percentage value [0-1] using displayPercent().
- Enumeration values:
-
major |
shows overall value |
minor |
shows value within major tick |
none |
if you want to leave blank |
Definition at line 100 of file LedEngine.h. |
Constructor & Destructor Documentation
|
constructor - don't forget to call if you inherit
Definition at line 119 of file LedEngine.cc. |
virtual LedEngine::~LedEngine |
( |
|
) |
[inline, virtual] |
|
Member Function Documentation
static float LedEngine::calcCycle |
( |
unsigned int |
period, |
|
|
float |
amp, |
|
|
float |
offset, |
|
|
unsigned int |
t |
|
) |
[inline, static, protected] |
|
|
Performs the 'cycle' calculation based on desired period, amplituted, amplitude offset, and time since start. See cycle().
Definition at line 134 of file LedEngine.h.
Referenced by calcValue(). |
static float LedEngine::calcFlash |
( |
float |
value |
) |
[inline, static, protected] |
|
|
Performs the 'flash' calculation based on current value (uses calcInvert() if value upper or lower third, 0 or 1 otherwise).
Definition at line 127 of file LedEngine.h.
Referenced by flash(). |
static float LedEngine::calcInvert |
( |
float |
value |
) |
[inline, static, protected] |
|
|
Performs the 'invert' calculation based on current value (returns 1-value).
Definition at line 123 of file LedEngine.h.
Referenced by calcFlash(). |
float LedEngine::calcValue |
( |
unsigned int |
i, |
|
|
unsigned int |
t |
|
) |
[inline, protected] |
|
void LedEngine::ccycle |
( |
LEDBitMask_t |
leds, |
|
|
unsigned int |
period, |
|
|
float |
amp, |
|
|
float |
offset = 0 , |
|
|
int |
phase = 0 |
|
) |
[inline] |
|
|
causes the leds specified by leds to cycle between low and high, clears others. See cycle() for parameter documentation.
Definition at line 77 of file LedEngine.h.
Referenced by displayNumber(). |
void LedEngine::cflash |
( |
LEDBitMask_t |
leds, |
|
|
float |
value, |
|
|
unsigned int |
ms |
|
) |
|
|
void LedEngine::clear |
( |
|
) |
|
|
void LedEngine::cset |
( |
LEDBitMask_t |
leds, |
|
|
float |
value |
|
) |
[inline] |
|
void LedEngine::cycle |
( |
LEDBitMask_t |
leds, |
|
|
unsigned int |
period, |
|
|
float |
amp, |
|
|
float |
offset = 0 , |
|
|
int |
phase = 0 |
|
) |
|
|
|
causes the leds specified by leds to cycle between low and high; values calculated for cycle will be clipped to [0,1] for more sensible blending of square wave approximations (high amplitude sine wave)
- Parameters:
-
| leds | the bitmask of leds to apply this to |
| period | the period of the cycle (milliseconds), includes an on and off |
| amp | the amplitude of the cycle - note that this is clipped at 0 and 1. |
| offset | the vertical offset of the cycle - simply shifts the baseline of the cycle up or down |
| phase | the phase within the cycle to start at (specify in milliseconds) |
When this function is called, the starting time is stored as current time + phase.
The equation used is
The idea is that with a amplitude=1 and offset=0, it will start at 0, ramp up to 1, and then ramp down again. The arguments to this function will let you control all parameters of the cycle.
You can get a blink-on/off instead of cycle on/off by using a very large amplitude.
Definition at line 253 of file LedEngine.cc.
Referenced by ccycle(), and EmergencyStopMC::EmergencyStopMC(). |
void LedEngine::displayNumber |
( |
int |
x, |
|
|
numStyle_t |
style |
|
) |
|
|
|
Allows convenient display of numerical information to the LEDs on the face.
If overflow occurs, the face LEDs are set to flash on and off 3 every 333 milliseconds
Definition at line 279 of file LedEngine.cc.
Referenced by ControlBase::refresh(). |
|
Allows convenient display of percentage information to the LEDs on the face.
Besides allowing a two-digit display, the 'edge' bar for each type is blinked to denote how full it is. So you can get up to a two-digit, base 5 display, with an extra digit of estimated value.
If overflow (>1) occurs, sets everything to .75.
If underflow (<0) occurs, sets everything to .25.
The left and right columns are combined with an OR operation. (they overlap on the top bar) Left and right designations are dog centric!
Definition at line 339 of file LedEngine.cc. |
void LedEngine::flash |
( |
LEDBitMask_t |
leds, |
|
|
unsigned int |
ms |
|
) |
|
|
|
sets the leds specified by leds to either a much higher or much lower value for ms milliseconds, then sets back.
Definition at line 224 of file LedEngine.cc. |
void LedEngine::flash |
( |
LEDBitMask_t |
leds, |
|
|
float |
value, |
|
|
unsigned int |
ms |
|
) |
|
|
float LedEngine::getSetting |
( |
LEDOffset_t |
led_id |
) |
[inline] |
|
|
returns the current setting of the LED specified by led_id (the value you passed in set())
Definition at line 84 of file LedEngine.h. |
float LedEngine::getValue |
( |
LEDOffset_t |
led_id, |
|
|
unsigned int |
planahead = 0 |
|
) |
[inline] |
|
|
returns the current value of the LED specified by led_id (the value being expressed - may change if cycling for instance)
Definition at line 86 of file LedEngine.h. |
|
sets the leds specified by leds to the inverse of their current value
Definition at line 177 of file LedEngine.cc. |
int LedEngine::isDirty |
( |
|
) |
|
|
void LedEngine::recalcFlashEnd |
( |
|
) |
|
|
void LedEngine::setColumn |
( |
float |
x, |
|
|
unsigned int |
low, |
|
|
unsigned int |
mid, |
|
|
unsigned int |
high, |
|
|
unsigned int |
top |
|
) |
[protected] |
|
void LedEngine::setOneOfTwo |
( |
unsigned int |
x, |
|
|
unsigned int |
low, |
|
|
unsigned int |
mid, |
|
|
unsigned int |
high |
|
) |
[protected] |
|
int LedEngine::updateLEDFrames |
( |
OutputCmd |
cmds[NumLEDs][NumFrames] |
) |
|
|
|
call this from a MotionCommand's updateOutputs() - performs the calculations to update LEDs' values
- Parameters:
-
| cmds | on input, used for weight values - on return, holds the resulting OutputCmd's |
Definition at line 166 of file LedEngine.cc.
Referenced by LedMC::updateOutputs(). |
int LedEngine::updateLEDs |
( |
OutputCmd |
cmds[NumLEDs] |
) |
|
|
|
call this from a MotionCommand's updateOutputs() - performs the calculations to update LEDs' values
- Parameters:
-
| cmds | on input, used for weight values - on return, holds the resulting OutputCmd's |
Definition at line 156 of file LedEngine.cc. |
|
call this from a MotionCommand's updateOutputs() - makes calls to MotionManager to update LED values
- Parameters:
-
| caller | pass the "parent" motioncommand's address here (usually will pass 'this') |
| mask | a bitmask of which leds to update (uses weight of 1) |
Definition at line 144 of file LedEngine.cc.
Referenced by EmergencyStopMC::updateOutputs(). |
Member Data Documentation
|
Initial value: {
ERS210Info::BotRLEDMask|ERS210Info::BotLLEDMask|ERS210Info::TopBrLEDMask,
ERS210Info::BotLLEDMask|ERS210Info::MidLLEDMask|ERS210Info::TopLLEDMask,
ERS210Info::BotRLEDMask|ERS210Info::BotLLEDMask|ERS210Info::TopLLEDMask|ERS210Info::TopBrLEDMask,
ERS210Info::BotRLEDMask|ERS210Info::BotLLEDMask|ERS210Info::MidRLEDMask|ERS210Info::TopLLEDMask
|ERS210Info::TopBrLEDMask,
ERS210Info::BotLLEDMask|ERS210Info::MidLLEDMask|ERS210Info::TopRLEDMask|ERS210Info::TopLLEDMask,
ERS210Info::BotRLEDMask|ERS210Info::BotLLEDMask|ERS210Info::TopRLEDMask|ERS210Info::TopBrLEDMask,
ERS210Info::BotRLEDMask|ERS210Info::BotLLEDMask|ERS210Info::MidRLEDMask|ERS210Info::MidLLEDMask
|ERS210Info::TopRLEDMask|ERS210Info::TopBrLEDMask,
ERS210Info::BotLLEDMask|ERS210Info::MidLLEDMask|ERS210Info::TopLLEDMask|ERS210Info::TopBrLEDMask,
ERS210Info::BotRLEDMask|ERS210Info::BotLLEDMask|ERS210Info::MidRLEDMask|ERS210Info::MidLLEDMask
|ERS210Info::TopRLEDMask|ERS210Info::TopLLEDMask|ERS210Info::TopBrLEDMask,
ERS210Info::BotLLEDMask|ERS210Info::MidLLEDMask|ERS210Info::TopRLEDMask|ERS210Info::TopLLEDMask
|ERS210Info::TopBrLEDMask,
ERS210Info::BotLLEDMask
}
holds a series of bit masks for the onedigit style of numerical display (0-10 and '.')
the hope is that these actually resemble the shapes of the numbers so people can recognize them more easily - without converting base 2 in their heads.
Definition at line 9 of file LedEngine.cc.
Referenced by displayNumber(). |
|
bit masks for the ondigit style of numberical display - just count the LEDs on the head
This is "Count the dots" style
Definition at line 37 of file LedEngine.cc.
Referenced by displayNumber(). |
|
the information regarding each of the LEDs
Definition at line 169 of file LedEngine.h.
Referenced by calcValue(), cflash(), clear(), cycle(), displayNumber(), flash(), getSetting(), invert(), LedEngine(), recalcFlashEnd(), set(), and setOneOfTwo(). |
The documentation for this class was generated from the following files:
|