Program Listing for File SevenSegment.h
↰ Return to documentation for file (lib/LED_clock/Modules/SevenSegment/inc/SevenSegment.h
)
#ifndef __SEVEN_SEGMENT_H_
#define __SEVEN_SEGMENT_H_
#include <Arduino.h>
#include "Segment.h"
#include "AnimatableObject.h"
#include "Animator.h"
#include "Configuration.h"
#include "SegmentTransitions.h"
#include "AnimationEffects.h"
enum SegmentPositions_t {
TOP_LEFT_SEGMENT = 0,
TOP_MIDDLE_SEGMENT = 1,
TOP_RIGHT_SEGMENT = 2,
CENTER_SEGMENT = 3,
BOTTOM_LEFT_SEGMENT = 4,
BOTTOM_MIDDLE_SEGMENT = 5,
BOTTOM_RIGHT_SEGMENT = 6
};
#define SEGMENT_OFF 10
class SevenSegment
{
public:
enum SegmentPosition {
LeftTopSegment = 1 << TOP_LEFT_SEGMENT,
MiddleTopSegment = 1 << TOP_MIDDLE_SEGMENT,
RightTopSegment = 1 << TOP_RIGHT_SEGMENT,
CenterSegment = 1 << CENTER_SEGMENT,
LeftBottomSegment = 1 << BOTTOM_LEFT_SEGMENT,
MiddleBottomSegment = 1 << BOTTOM_MIDDLE_SEGMENT,
RightBottomSegment = 1 << BOTTOM_RIGHT_SEGMENT
};
enum SevenSegmentMode {
FULL_SEGMENT,
HALF_SEGMENT,
ONLY_ONE
};
private:
Segment* Segments[7];
SevenSegmentMode DsiplayMode;
static uint8_t segmentMap[10];
uint8_t currentValue;
bool isAnimationInitialized;
Animator* AnimationHandler;
uint8_t getIndexOfSegment(SegmentPosition positionInDisplay);
bool isConfigComplete();
void DisplayNumberWithoutAnim(uint8_t value);
Animator::ComplexAmination* getTransition(uint8_t from, uint8_t to);
public:
SevenSegment(SevenSegmentMode mode, Animator* DisplayAnimationHandler);
~SevenSegment();
void add(Segment* segmentToAdd, SegmentPosition positionInDisplay);
void DisplayNumber(uint8_t value);
void DisplayChar(char value);
void FlashMiddleDot(uint8_t numDots);
bool canDisplay(char charToCheck);
void setColor(CRGB color);
void updateColor(CRGB color);
void off();
};
#endif