FastLED 3.9.15
Loading...
Searching...
No Matches
pir.cpp
Go to the documentation of this file.
1#define FASTLED_INTERNAL
2#include "FastLED.h"
3
4#include "fastpin.h"
5#include "fl/strstream.h"
6#include "fl/warn.h"
7#include "sensors/pir.h"
8
9namespace fl {
10
11namespace {
12int g_counter = 0;
13Str getButtonName(const char *button_name) {
14 if (button_name) {
15 return Str(button_name);
16 }
17 int count = g_counter++;
18 if (count == 0) {
19 return Str("PIR");
20 }
21 StrStream s;
22 s << "Pir " << g_counter++;
23 return s.str();
24}
25} // namespace
26
27Pir::Pir(int pin, const char* button_name): mButton(getButtonName(button_name).c_str()), mPin(pin) {
28 mPin.setPinMode(DigitalPin::kInput);
29}
30
32 return mPin.high() || mButton.clicked();
33}
34
35
36PirAdvanced::PirAdvanced(int pin, uint32_t latchMs, uint32_t risingTime,
37 uint32_t fallingTime)
38 : mPir(pin), mRamp(risingTime, latchMs, fallingTime) {
39}
40
41bool PirAdvanced::detect(uint32_t now) {
42 bool currentState = mPir.detect();
43 if (currentState && !mLastState) {
44 mRamp.trigger(now);
45 }
46 mLastState = currentState;
47 return mRamp.isActive(now);
48}
49
50uint8_t PirAdvanced::transition(uint32_t now) {
51 // ensure detect() logic runs so we trigger on edges
52 detect(now);
53 return mRamp.update(now);
54}
55
56} // namespace fl
central include file for FastLED, defines the CFastLED class/object
UIButton mButton
Definition pir.h:26
bool detect()
Definition pir.cpp:31
Pir(int pin, const char *button_name=nullptr)
Definition pir.cpp:27
DigitalPin mPin
Definition pir.h:27
PirAdvanced(int pin, uint32_t latchMs=5000, uint32_t risingTime=1000, uint32_t fallingTime=1000)
Definition pir.cpp:36
bool mLastState
Definition pir.h:69
TimeRamp mRamp
Definition pir.h:68
uint8_t transition(uint32_t now)
Returns a 0–255 ramp value: • ramps 0→255 over risingTime • holds 255 until latchMs–fallingTime • ram...
Definition pir.cpp:50
bool detect(uint32_t now)
Returns true if the PIR is “latched on” (within latchMs of last trigger).
Definition pir.cpp:41
Definition str.h:368
const Str & str() const
Definition strstream.h:46
Class base definitions for defining fast pin access.
Str getButtonName(const char *button_name)
Definition pir.cpp:13
Implements a simple red square effect for 2D LED grids.
Definition crgb.h:16