Files
klubhaus-doorbell/libraries/FastLED/src/sensors/digital_pin.h
2026-02-12 00:45:31 -08:00

40 lines
883 B
C++

#pragma once
#include "fl/stdint.h"
#include "fl/memory.h"
namespace fl {
FASTLED_SMART_PTR(DigitalPinImpl);
// A simple digital pin. If we are compiling in an Arduino environment, then
// this class will bind to that. Otherwise it will fall back to the platform api.
// Note that this class does not support analog mode nor pullups/pulldowns.
class DigitalPin {
public:
enum Mode {
kInput = 0,
kOutput,
kInputPullup,
// kInputPulldown, Not implemented in Arduino.h
};
DigitalPin(int pin);
~DigitalPin();
DigitalPin(const DigitalPin &other);
DigitalPin &operator=(const DigitalPin &other);
DigitalPin(DigitalPin &&other) = delete;
void setPinMode(Mode mode);
bool high() const; // true if high, false if low
void write(bool is_high);
private:
DigitalPinImplPtr mImpl;
};
} // namespace fl