semf
leddimming.h
Go to the documentation of this file.
1
10#ifndef SEMF_OUTPUT_LEDDIMMING_H_
11#define SEMF_OUTPUT_LEDDIMMING_H_
12
15#include <semf/output/pwmout.h>
18
19namespace semf
20{
25{
26public:
32 LedDimming(PwmOut& dimmPwmOut, app::TimeBase& timebase);
33 explicit LedDimming(const LedDimming& other) = delete;
35 virtual ~LedDimming() = default;
37
38 void setBrightness(uint16_t maxBrightness) override;
39 void setBrightness(uint16_t minBrightness, uint16_t maxBrightness) override;
40 void setOn() override;
41 void setOff() override;
42 void toggle() override;
43 void setBlinking(unsigned int onOffTime) override;
44 void setBlinking(unsigned int onTime, unsigned int offTime) override;
45 void setSine(unsigned int periodInTimeBaseTicks, unsigned int startIndexInTimeBaseTicks) override;
46 void setSine(unsigned int periodInTimeBaseTicks) override;
47 void setTriangle(unsigned int periodInTimeBaseTicks, unsigned int startIndexInTimeBaseTicks) override;
48 void setTriangle(unsigned int periodInTimeBaseTicks) override;
49 Mode mode() const override;
50
51private:
56 void startOnTimeInBlinkingMode();
61 void startOffTimeInBlinkingMode();
66 bool checkForConstantSettingInBlinkingMode();
68 void nextSineValue();
70 void nextTriangleValue();
76 void onTimeout();
77
79 PwmOut& m_dimmPwm;
81 SoftwareTimer m_timer;
83 Mode m_mode = Mode::Off;
85 uint16_t m_minBrightness = 0;
87 uint16_t m_maxBrightness = 1000;
89 unsigned int m_waveformPeriodTicks = 1000;
91 unsigned int m_waveformStepIndex = 0;
93 unsigned int m_blinkOnTicks = 0;
95 unsigned int m_blinkOffTicks = 0;
97 SEMF_SLOT(m_startOnTimeInBlinkingModeSlot, LedDimming, *this, startOnTimeInBlinkingMode);
99 SEMF_SLOT(m_startOffTimeInBlinkingModeSlot, LedDimming, *this, startOffTimeInBlinkingMode);
101 SEMF_SLOT(m_nextSineValueSlot, LedDimming, *this, nextSineValue);
103 SEMF_SLOT(m_nextTriangleValueSlot, LedDimming, *this, nextTriangleValue);
104};
105} /* namespace semf */
106#endif /* SEMF_OUTPUT_LEDDIMMING_H_ */
This class uses PwmOut and a SoftwareTimer in order to generate different waveforms....
Definition: leddimming.h:25
LedDimming(PwmOut &dimmPwmOut, app::TimeBase &timebase)
Constructor.
Definition: leddimming.cpp:17
void setOff() override
Definition: leddimming.cpp:61
void setOn() override
Definition: leddimming.cpp:53
void toggle() override
Definition: leddimming.cpp:69
void setTriangle(unsigned int periodInTimeBaseTicks, unsigned int startIndexInTimeBaseTicks) override
Starts showing a triangle waveform on the led.
Definition: leddimming.cpp:127
LedDimming(const LedDimming &other)=delete
void setBlinking(unsigned int onOffTime) override
Start blinking the led with the same on-off time.
Definition: leddimming.cpp:78
void setSine(unsigned int periodInTimeBaseTicks, unsigned int startIndexInTimeBaseTicks) override
Starts showing a sine waveform on the led.
Definition: leddimming.cpp:99
Mode mode() const override
Returns the active mode of the led.
Definition: leddimming.cpp:155
void setBrightness(uint16_t maxBrightness) override
Sets the maximum brightness of the LED.
Definition: leddimming.cpp:23
Class for using a PWM as an output with permille value handling.
Definition: pwmout.h:22
Software SoftwareTimer which can be added to a TimeBase or used singular.
Definition: softwaretimer.h:29
This class uses PwmOut and a SoftwareTimer in order to generate different waveforms....
Definition: leddimming.h:35
virtual ~LedDimming()=default
A TimeBase is the bridge between e.g. a hardware timer (interrupt service routine) and TickReceiver o...
Definition: timebase.h:36