Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Clone this wiki locally
TSL235R sensor is a light intensity sensor or an irradiance to frequency converter.
Supply voltage : 2.7 V to 5.5 V
Output : digital, 50% duty cycle
Measuring values : 0.001 uW/cm2 - 1000 uW/cm2
Producer's page and documentation :
Source code: TSL235R code source for Daisy Pi
The source code exaplained :
It relies on the WiringPi library to read a GPIO pin ( GPIO18 or pin 12 of the main header ).
The absolute values are 1.000.000 times apart each other ( absolute darkness and maximum light ) and are given as counts per second. Since a normal day indoor reading would give tens or hundreds of thousands of hertz and dark or night reading would give less than 100 hertz, an autoscale mechanism was implemented.
Thus, it takes first some readings ( 3 batches by default, parameter customisable ) and determines the average number of readings to be expected for 300 milliseconds. Then, another batch of readings are made, for the specific number discovered previously. This is also customisable and in the end, the offered parameter will be in fact a mathematical mean of the more exact last reading.
This is done to provide accurate readings despite small temporarily light variations or missed pin readout. Also, as no standard number of counts per second would be average, auto scale is mandatory in the beginning to avoid blocking the program in "forever reading" ( if a typical 36.000 hertz value would be expected during a night reading, the full reading would could take up to 36.000 seconds - 10 hours ).
The code is subject to improvement of course. Any way of reading the pin would do and be usable in this code - for now we use WiringPi as it seems nice and fast ( we needed megahertz grade software readings to be performed ).