3
3
import struct
4
4
import time
5
5
6
- DEV_I2C_ADDR = 0x26
7
- RELAY_REG = 0x10
8
- ADC_8BIT_REG = 0x20
9
- ADC_16BIT_REG = 0x30
10
- I2C_ADDR_REG = 0xFF
6
+ DEV_I2C_ADDR = 0x26
7
+ RELAY_REG = 0x10
8
+ ADC_8BIT_REG = 0x20
9
+ ADC_16BIT_REG = 0x30
10
+ I2C_ADDR_REG = 0xFF
11
11
12
- class Relay_Stack :
13
12
13
+ class Relay_Stack :
14
14
def __init__ (self , i2c , addr ):
15
15
self .i2c = i2c
16
16
self .i2c_addr = addr
17
-
17
+
18
18
def _available (self ):
19
19
if not (self .i2c_addr in self .i2c .scan ()):
20
20
raise ModuleError ("4 relay module maybe not connect" )
21
21
22
22
def get_relay_status (self , num ):
23
- """
23
+ """
24
24
get RELAY Status.
25
25
reg: 0x10
26
26
num: select only 1 to 4
27
27
return 0 or 1
28
28
"""
29
29
num = min (4 , max (num , 1 ))
30
- return (( self .i2c .readfrom_mem (self .i2c_addr , RELAY_REG , 1 )[0 ] >> (num - 1 )) & 0x01 )
30
+ return (self .i2c .readfrom_mem (self .i2c_addr , RELAY_REG , 1 )[0 ] >> (num - 1 )) & 0x01
31
31
32
32
def set_relay_state (self , num , state ):
33
33
"""
@@ -39,7 +39,7 @@ def set_relay_state(self, num, state):
39
39
num = min (4 , max (num , 1 ))
40
40
data = self .i2c .readfrom_mem (self .i2c_addr , RELAY_REG , 1 )[0 ]
41
41
if state :
42
- data |= ( 0x01 << (num - 1 ) )
42
+ data |= 0x01 << (num - 1 )
43
43
else :
44
44
data &= ~ (0x01 << (num - 1 ))
45
45
self .i2c .writeto_mem (self .i2c_addr , RELAY_REG , bytes ([data ]))
@@ -51,18 +51,18 @@ def set_all_relay_state(self, state):
51
51
state: value is 0 or 1
52
52
"""
53
53
state = min (1 , max (state , 0 ))
54
- data = 0x0f if state else 0x00
54
+ data = 0x0F if state else 0x00
55
55
self .i2c .writeto_mem (self .i2c_addr , RELAY_REG , bytes ([data ]))
56
56
57
- # ************************# Version 1.1 #****************************#
57
+ # ************************# Version 1.1 #****************************#
58
58
def get_adc_8bit_value (self , volt = 0 ):
59
59
"""
60
60
get adc raw/volt 8bit value
61
61
"""
62
62
val = self .i2c .readfrom_mem (self .i2c_addr , ADC_8BIT_REG , 1 )[0 ]
63
63
if volt :
64
- val = (3.3 / 255 ) * val * 8
65
- return round (val , 2 )
64
+ val = (3.3 / 255 ) * val * 8
65
+ return round (val , 2 )
66
66
else :
67
67
return val
68
68
@@ -71,29 +71,29 @@ def get_adc_12bit_value(self, volt=0):
71
71
get adc raw/volt 12bit value
72
72
"""
73
73
buf = self .i2c .readfrom_mem (self .i2c_addr , ADC_16BIT_REG , 2 )
74
- val = struct .unpack ('<H' , buf )[0 ]
74
+ val = struct .unpack ("<H" , buf )[0 ]
75
75
if volt :
76
- val = (3.3 / 4095 ) * val * 8
76
+ val = (3.3 / 4095 ) * val * 8
77
77
return round (val , 2 )
78
78
else :
79
79
return val
80
-
80
+
81
81
def set_i2c_address (self , addr ):
82
82
"""
83
83
set i2c address.
84
- addr : 1 to 127
84
+ addr : 1 to 127
85
85
"""
86
86
if addr >= 1 and addr <= 127 :
87
87
if addr != self .i2c_addr :
88
88
self .i2c .writeto_mem (self .i2c_addr , I2C_ADDR_REG , bytes ([addr ]))
89
89
self .i2c_addr = addr
90
90
time .sleep_ms (100 )
91
91
92
- #*******************************************************************#
93
92
94
- class Relay4 ( Relay_Stack ):
93
+ # *******************************************************************#
95
94
95
+
96
+ class Relay4 (Relay_Stack ):
96
97
def __init__ (self , address : int = DEV_I2C_ADDR ):
97
98
super ().__init__ (i2c1 , address )
98
99
self ._available ()
99
-
0 commit comments