@@ -28,6 +28,14 @@ class LTR329ALS01:
2828 ALS_GAIN_8X = const (0x03 )
2929 ALS_GAIN_48X = const (0x06 )
3030 ALS_GAIN_96X = const (0x07 )
31+ ALS_GAIN_VALUES = {
32+ ALS_GAIN_1X : 1 ,
33+ ALS_GAIN_2X : 2 ,
34+ ALS_GAIN_4X : 4 ,
35+ ALS_GAIN_8X : 8 ,
36+ ALS_GAIN_48X : 48 ,
37+ ALS_GAIN_96X : 96
38+ }
3139
3240 ALS_INT_50 = const (0x01 )
3341 ALS_INT_100 = const (0x00 )
@@ -37,6 +45,16 @@ class LTR329ALS01:
3745 ALS_INT_300 = const (0x06 )
3846 ALS_INT_350 = const (0x07 )
3947 ALS_INT_400 = const (0x03 )
48+ ALS_INT_VALUES = {
49+ ALS_INT_50 : 0.5 ,
50+ ALS_INT_100 : 1 ,
51+ ALS_INT_150 : 1.5 ,
52+ ALS_INT_200 : 2 ,
53+ ALS_INT_250 : 2.5 ,
54+ ALS_INT_300 : 3 ,
55+ ALS_INT_350 : 3.5 ,
56+ ALS_INT_400 : 4
57+ }
4058
4159 ALS_RATE_50 = const (0x00 )
4260 ALS_RATE_100 = const (0x01 )
@@ -51,6 +69,9 @@ def __init__(self, pysense = None, sda = 'P22', scl = 'P21', gain = ALS_GAIN_1X,
5169 else :
5270 self .i2c = I2C (0 , mode = I2C .MASTER , pins = (sda , scl ))
5371
72+ self .gain = gain
73+ self .integration = integration
74+
5475 contr = self ._getContr (gain )
5576 self .i2c .writeto_mem (ALS_I2CADDR , ALS_CONTR_REG , bytearray ([contr ]))
5677
@@ -78,3 +99,16 @@ def light(self):
7899 data0 = int (self ._getWord (ch0high [0 ], ch0low [0 ]))
79100
80101 return (data0 , data1 )
102+
103+ def lux (self ):
104+ # Calculate Lux value from formula in Appendix A of the datasheet
105+ light_level = self .light ()
106+ ratio = light_level [1 ]/ (light_level [0 ]+ light_level [1 ])
107+ if ratio < 0.45 :
108+ return (1.7743 * light_level [0 ] + 1.1059 * light_level [1 ]) / self .ALS_GAIN_VALUES [self .gain ] / self .ALS_INT_VALUES [self .integration ]
109+ elif ratio < 0.64 and ratio >= 0.45 :
110+ return (4.2785 * light_level [0 ] - 1.9548 * light_level [1 ]) / self .ALS_GAIN_VALUES [self .gain ] / self .ALS_INT_VALUES [self .integration ]
111+ elif ratio < 0.85 and ratio >= 0.64 :
112+ return (0.5926 * light_level [0 ] + 0.1185 * light_level [1 ]) / self .ALS_GAIN_VALUES [self .gain ] / self .ALS_INT_VALUES [self .integration ]
113+ else :
114+ return 0
0 commit comments