Ambient Light Sensor TinyShield Tutorial

The Ambient Light Sensor TinyShield allows you to measure light intensity in your next TinyDuino project. But not only is this sensor able to measure light, it can also be programmed for proximity detection with the help of an LED. Check out page 5 of the TSL2572 datasheet if you're interested in this application!
If you have a smartphone, you probably carry an ambient light sensor in your pocket every day. Current iPhones use this type of sensor to control screen brightness, and for proximity detection to turn off the screen during phone calls when the device is near your face.
To learn more about the TinyDuino Platform, click here
Description
Measure light with your TinyDuino - this TinyShield features a TAOS TSL2572 Ambient Light Sensor, that approximates human eye response to light intensity under a variety of lighting conditions and through a variety of attenuation materials. Accurate ALS measurements are the result of TAOS’ patented dual-diode technology and the UV rejection filter incorporated in the package. In addition, the operating range is extended to 60,000 lux in sunlight when the low-gain mode is used.
The Ambient Light Sensor TinyShield incorporates level shifters and a local power supply to ensure proper and safe operation over the entire TinyDuino operating voltage range between 3 – 5V.
To see what other TinyShields are compatible with this TinyShield, see the TinyShield Compatibility Matrix
Technical Details
TAOS TSL2572 Ambient Light Sensor Specs- Approximates Human Eye Response
- 45,000,000:1 Dynamic Range
- Operation to 60,000 lux in Sunlight
- Package UV Rejection Filter
- Wide Magnetic Field Range (+/-8 Oe)
- Low Power – Active: 200uA, Wait: 90uA, Sleep: 2.2u
- Voltage: 3.0V - 5.5V
- Current: 200uA (Active). Due to the low current, this board can be run using the TinyDuino coin cell option.
- A5/SCL - I2C Serial Clock line
- A4/SDA - I2C Serial Data line
- 20mm x 20mm (.787 inches x .787 inches)
- Max Height (from lower bottom TinyShield Connector to upper top TinyShield Connector): 5.11mm (0.201 inches)
- Weight: .96 gram (.03 ounces)
Notes
- You can also use this shield without the TinyDuino – there are 0.1" spaced connections for power, ground, and the two I2C signals along the side of the TinyShield to allow you to connect a different system.
Materials

Hardware
- A TinyDuino Processor Board
- TinyDuino and USB TinyShield OR
- TinyZero OR
- TinyScreen+
- Ambient Light Sensor TinyShield
- Micro USB Cable
Software
Hardware Assembly
On top of your processor board of choice (i.e. TinyDuino), place the Ambient Light Sensor TinyShield. Plug a MicroUSB cable into the USB port and then plug the cable into a free USB port on your computer. Make sure the processor is switched on.

Software Setup
First, open the Arduino IDE. If you don't have it installed, check out our TinyDuino Setup Tutorial.
The TSL2572 Library is required for this sketch.
The Code
Press here to download a .zip file of the program. View the .ino Sketch file here:
Code
/*
TinyCircuits Ambient Light TinyShield Example Sketch
Using AMS TAOS TSL2572
This example code is in the public domain.
Written 25 October 2015
By Ken Burns
Modified 31 December 2020
By Hunter Hykes
https://TinyCircuits.com
*/
#include <Wire.h>
#include <TSL2572.h> // For TSL2572 ambient light sensor
TSL2572 light_sensor;
#if defined (ARDUINO_ARCH_AVR)
#define SerialMonitorInterface Serial
#include <SoftwareSerial.h>
#elif defined(ARDUINO_ARCH_SAMD)
#define SerialMonitorInterface SerialUSB
#endif
int gain_val = 0;
void setup()
{
Wire.begin();
SerialMonitorInterface.begin(9600);
//***************************************
// SETTINGS & ADJUSTMENTS
//***************************************
// light_sensor.init(GAIN_1X);
// light_sensor.init(GAIN_8X);
light_sensor.init(GAIN_16X);
// light_sensor.init(GAIN_120X);
}
void loop()
{
float AmbientLightLux = light_sensor.readAmbientLight();
SerialMonitorInterface.print("Lux: ");
SerialMonitorInterface.println(AmbientLightLux);
delay(1000);
}
Upload the program using the Tools selections:

Once the upload is complete, open up the Serial Monitor at 9600 baud and you'll be able to observe the data gathered by the sensor!

For your project that involves sensing light, you will probably have to take some readings first to find out what those readings would be. Make sure you account for day and night light if the sun may be involved!
Downloads
Contact Us
If you have any questions or feedback, feel free to email us or make a post on our forum. Show us what you make by tagging @TinyCircuits on Instagram, Twitter, or Facebook so we can feature it.
Thanks for making with us!