32 REG_CONTROL = 0x00 | VAL_COMMAND
33 REG_CONFIG = 0x01 | VAL_COMMAND
39 def __init__(self, slave, time, name="TSL_LIGHT_X"):
40 I2C.__init__(self,
toint(slave))
46 return "%s(slave=0x%02X)" % (self.
name, self.
slave)
61 self.__setTime__(time)
64 return self.__getTime__()
67 VAL_TIME_402_MS = 0x02
68 VAL_TIME_101_MS = 0x01
71 REG_CHANNEL_0_LOW = 0x0C | TSL_LIGHT_X.VAL_COMMAND
72 REG_CHANNEL_1_LOW = 0x0E | TSL_LIGHT_X.VAL_COMMAND
77 def __init__(self, slave, time, gain, name="TSL2561X"):
78 TSL_LIGHT_X.__init__(self, slave, time, name)
84 ch0_word = ch0_bytes[1] << 8 | ch0_bytes[0]
85 ch1_word = ch1_bytes[1] << 8 | ch1_bytes[0]
87 return self.__calculateLux__(scaling * ch0_word, scaling * ch1_word)
97 raise ValueError(
"Gain %d out of range [%d,%d]" % (gain, 1, 16))
98 new_byte_gain = (bit_gain << 4) & self.
MASK_GAIN
101 new_byte_config = (current_byte_config & ~self.
MASK_GAIN) | new_byte_gain
106 if (current_byte_config & self.
MASK_GAIN):
112 if not time
in [14, 101, 402]:
113 raise ValueError(
"Time %d out of range [%d,%d,%d]" % (time, 14, 101, 402))
123 new_byte_time = bits_time & self.
MASK_TIME
126 new_byte_config = (current_byte_config & ~self.
MASK_TIME) | new_byte_time
131 bits_time = (current_byte_config & self.
MASK_TIME)
139 t = TSL_LIGHT_X.VAL_INVALID
145 TSL2561X.__init__(self, slave, time, gain,
"TSL2561CS")
148 if float(channel0_value) == 0.0:
151 channel_ratio = channel1_value / float(channel0_value)
152 if 0 < channel_ratio <= 0.52:
153 lux = 0.0315 * channel0_value - 0.0593 * channel0_value *(channel_ratio**1.4)
154 elif 0.52 < channel_ratio <= 0.65:
155 lux = 0.0229 * channel0_value - 0.0291 * channel1_value
156 elif 0.65 < channel_ratio <= 0.80:
157 lux = 0.0157 * channel0_value - 0.0180 * channel1_value
158 elif 0.80 < channel_ratio <= 1.30:
159 lux = 0.00338 * channel0_value - 0.00260 * channel1_value
167 TSL2561X.__init__(self, slave, time, gain,
"TSL2561T")
170 if float(channel0_value) == 0.0:
173 channel_ratio = channel1_value / float(channel0_value)
174 if 0 < channel_ratio <= 0.50:
175 lux = 0.0304 * channel0_value - 0.062 * channel0_value * (channel_ratio**1.4)
176 elif 0.50 < channel_ratio <= 0.61:
177 lux = 0.0224 * channel0_value - 0.031 * channel1_value
178 elif 0.61 < channel_ratio <= 0.80:
179 lux = 0.0128 * channel0_value - 0.0153 * channel1_value
180 elif 0.80 < channel_ratio <= 1.30:
181 lux = 0.00146 * channel0_value - 0.00112 * channel1_value
189 TSL2561X.__init__(self, slave, time, gain,
"TSL2561")
194 VAL_TIME_400_MS = 0x00
195 VAL_TIME_200_MS = 0x01
196 VAL_TIME_100_MS = 0x02
198 REG_DATA_LOW = 0x04 | TSL_LIGHT_X.VAL_COMMAND
202 def __init__(self, slave=0x29, time=400, name="TSL4531"):
203 TSL_LIGHT_X.__init__(self, slave, time, name)
206 if not time
in [100, 200, 400]:
207 raise ValueError(
"Time %d out of range [%d,%d,%d]" % (time, 100, 200, 400))
220 new_byte_config = (current_byte_config & ~self.
MASK_TCNTRL) | new_byte_time
225 bits_time = (current_byte_config & self.
MASK_TCNTRL)
233 t = TSL_LIGHT_X.VAL_INVALID
242 TSL4531.__init__(self, slave, time,
"TSL45311")
246 TSL4531.__init__(self, slave, time,
"TSL45313")
250 TSL4531.__init__(self, slave, time,
"TSL45315")
254 TSL4531.__init__(self, slave, time,
"TSL45317")