-
Notifications
You must be signed in to change notification settings - Fork 0
/
SRRelayController.h
57 lines (54 loc) · 1.49 KB
/
SRRelayController.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<Arduino.h>
/*
* updating this value doesnot
* have any effect as of now.
* currently, this stays just as an
* info
*/
#define MAX_NO_OF_DEVICES 8
/*
* Control multiple relays
* (directly or indirectly via ICs)
* with few digital pins, with the
* help of a latched shift register (eg. 74HC595)
*/
class SRRelayController {
public:
/*
* Instantiate SRRelayController
* Accepts digital pins shift register is
* connected to
* Caution: all of these pins must be configured
* to be in the output mode.
*/
SRRelayController(byte sr_cp,byte sr_ds,byte sr_latch);
/*
* Update device_status
* LSB -> SR first output
* Note: this will only update the in memory
* status. Call flush() to reflect this change
* in hardware
*/
void setDeviceStatus(byte device_status);
/*
* get device status
*/
byte getDeviceStatus();
/*
* Since updating hardware takes time
* hardware is not immediately updated on
* calling turnDeviceOnOff function
* this also allows to push in a bunch of
* changes at once.
*/
void flush();
private:
byte pin_sr_cp;
byte pin_sr_ds;
byte pin_sr_latch;
/*
* Currently stores device_status in bytes
* can be turned to int or long in future
*/
byte device_status = 0b00000000;
};