PicoLC Arduino Library
Arduino library for PicoLC hardware
Toggle main menu visibility
Loading...
Searching...
No Matches
PicoLCLED.cpp
1
#include <cmath>
2
#include <cstdint>
3
#include <algorithm>
4
5
#include "../PicoLC.h"
6
7
PicoLCLED::PicoLCLED() {
8
}
9
10
void
PicoLCLED::patternMode
(PatternMode mode) { _patternMode = mode; }
11
PatternMode
PicoLCLED::patternMode
()
const
{
return
_patternMode; }
12
13
uint16_t PicoLCLED::update(uint32_t currentMillis) {
14
uint16_t wireState = 0;
15
16
if
( _patternMode == PatternMode::Pulse ) {
17
if
( _state ) {
18
_pulseStart = currentMillis;
19
_state =
false
;
20
}
21
if
( _pulseStart > 0 && currentMillis < _pulseStart + _pulseLength ) {
22
wireState = 1;
23
}
else
{
24
_pulseStart = 0;
25
}
26
}
27
if
( _state ) {
28
if
( _patternMode == PatternMode::Blink ) {
29
if
( _blinkStart == 0 ) {
30
_blinkStart = currentMillis;
31
}
32
_blinkStart += ((currentMillis - _blinkStart) / _blinkPeriod) * _blinkPeriod;
33
if
( currentMillis - _blinkStart < _blinkOnTime ) {
34
wireState = 1;
35
}
36
}
else
{
37
wireState = 1;
38
}
39
}
40
return
wireState | (_brightness << 1);
41
/*
42
if( !wireState ) {
43
digitalWrite(_channel, LOW);
44
return 0;
45
}
46
if( _brightness < PicoLCLED::PWM_MAX ) {
47
analogWrite(_channel, wireState ? _brightness : 0);
48
} else {
49
digitalWrite(_channel, wireState ? HIGH : LOW);
50
}
51
return 1;
52
*/
53
}
54
55
bool
PicoLCLED::read
()
const
{
56
if
( _patternMode == PatternMode::Pulse ) {
57
return
_pulseStart > 0;
58
}
59
return
_state;
60
}
61
62
bool
PicoLCLED::write
(
bool
state) {
63
if
( _patternMode == PatternMode::Pulse && _pulseLength > 0 && !state ) {
64
_pulseStart = 0;
65
}
66
_state = state;
67
return
_state;
68
}
69
70
void
PicoLCLED::toggle
() {
71
if
( _patternMode == PatternMode::Pulse && _pulseLength > 0 && !_state ) {
72
write
(
false
);
73
}
else
{
74
write
(!_state);
75
}
76
}
77
78
void
PicoLCLED::pulseLength
(uint32_t ms) { _pulseLength = ms; }
79
uint32_t
PicoLCLED::pulseLength
()
const
{
return
_pulseLength; }
80
void
PicoLCLED::blinkPeriod
(uint32_t ms) { _blinkPeriod = ms; }
81
uint32_t
PicoLCLED::blinkPeriod
()
const
{
return
_blinkPeriod; }
82
void
PicoLCLED::blinkOnTime
(uint32_t ms) { _blinkOnTime = ms; }
83
uint32_t
PicoLCLED::blinkOnTime
()
const
{
return
_blinkOnTime; }
84
85
void
PicoLCLED::brightness
(uint16_t
brightness
) {
86
const
uint32_t value = std::min<uint16_t>(
brightness
, 1000);
87
88
_brightness =
static_cast<
uint16_t
>
((value * value * 1000UL + 5000UL) / 10000UL);
89
}
90
uint16_t
PicoLCLED::brightness
()
const
{
91
uint16_t duty = std::min<uint16_t>(_brightness, 1000);
92
return
static_cast<
uint16_t
>
(std::sqrt(duty / 1000.0F) * 1000.0F);
93
}
PicoLCLED::blinkOnTime
uint32_t blinkOnTime() const
Returns the active time within each Blink-mode cycle.
Definition
PicoLCLED.cpp:83
PicoLCLED::blinkPeriod
uint32_t blinkPeriod() const
Returns the complete Blink-mode cycle period.
Definition
PicoLCLED.cpp:81
PicoLCLED::pulseLength
uint32_t pulseLength() const
Returns the configured Pulse-mode duration.
Definition
PicoLCLED.cpp:79
PicoLCLED::read
bool read() const
Returns the current logical LED state.
Definition
PicoLCLED.cpp:55
PicoLCLED::brightness
void brightness(uint16_t brightness)
Sets the perceived LED brightness.
Definition
PicoLCLED.cpp:85
PicoLCLED::brightness
uint16_t brightness() const
Returns the configured perceived LED brightness.
Definition
PicoLCLED.cpp:90
PicoLCLED::write
bool write(bool state)
Applies a logical command to the LED.
Definition
PicoLCLED.cpp:62
PicoLCLED::patternMode
PatternMode patternMode() const
Returns the configured timed LED behavior.
Definition
PicoLCLED.cpp:11
PicoLCLED::toggle
void toggle()
Toggles the LED state or active pulse.
Definition
PicoLCLED.cpp:70
src
ui
PicoLCLED.cpp
Generated by
1.17.0