roo_control
API Documentation for roo_control
Loading...
Searching...
No Matches
gpio_relay.h
Go to the documentation of this file.
1#pragma once
2
3#include <Arduino.h>
4
6
7namespace roo_control {
8
9/// Simple, raw, Arduino GPIO-pin-controlled relay switch.
10class GpioRelay : public BinarySwitch {
11 public:
12 GpioRelay(uint8_t pin, BinaryLogicalState initial_state = BINARY_STATE_LOW)
13 : pin_(pin) {
14 pinMode(pin_, OUTPUT);
15 digitalWrite(pin_, initial_state);
16 }
17
18 bool setState(BinaryLogicalState state) override {
19 digitalWrite(pin_, state);
20 return digitalRead(pin_) == state;
21 }
22
23 bool getState(BinaryLogicalState& result) const override {
24 result = (BinaryLogicalState)digitalRead(pin_);
25 return true;
26 }
27
28 private:
29 uint8_t pin_;
30};
31
32} // namespace roo_control
Simple, raw, Arduino GPIO-pin-controlled relay switch.
Definition gpio_relay.h:10
bool setState(BinaryLogicalState state) override
Updates the state of the switch. Returns true on success.
Definition gpio_relay.h:18
bool getState(BinaryLogicalState &result) const override
Definition gpio_relay.h:23
GpioRelay(uint8_t pin, BinaryLogicalState initial_state=BINARY_STATE_LOW)
Definition gpio_relay.h:12
BinaryLogicalState
Binary logical state used by selectors and switches.