I wonder what is the maximum value this sensor can return ? I was surprised to get a 5 digit value when I shone a torch at it. I was wanting to use this light value in the brightness value in “motephat.set_pixel” parameters. I know the value should be between 0 and 1 and was expecting to have to divide the light reading down to achieve this, but I was surprised that it did not give an error with a value > 1 so I was wondering how it handled a value >1 ?
The calculated lux value can range from 0 to 65535, but normal levels of ambient (outdoor) illumination should be in the range of 0 to 1000. However you may find lights brighter than 2000 indoors, and shining a bright light directly on the sensor will saturate it as you’ve found.
The best thing to do is to save a
MAX_LUX to clamp the light level into a sensible range, and then divide by that range. Something like this:
MIN_LUX = 10 MAX_LUX = 1500 # Clamp the light reading between MIN and MAX lux = max(min(light_sensor_reading, MAX_LUX), MIN_LUX) # Subtract MIN_LUX so the range is 0 to MAX_LUX - MIN_LUX lux -= MIN_LUX # Divide it by MAX_LUX - MIN_LUX to get a 0.0 to 1.0 range indicating level lux = Float(lux) / (MAX_LUX - MIN_LUX)
Thanks again, that looks just the answer I need