CircuitPython module for the TSL2591 precision light sensor. See examples/ for a demo of the usage.

  • Author(s): Tony DiCola

Implementation Notes


Software and Dependencies:

adafruit_tsl2591.GAIN_HIGH = 32

High gain (428x)

adafruit_tsl2591.GAIN_LOW = 0

Low gain (1x)

adafruit_tsl2591.GAIN_MAX = 48

Max gain (9876x)

adafruit_tsl2591.GAIN_MED = 16

Medium gain (25x)

adafruit_tsl2591.INTEGRATIONTIME_100MS = 0

100 millis

adafruit_tsl2591.INTEGRATIONTIME_200MS = 1

200 millis

adafruit_tsl2591.INTEGRATIONTIME_300MS = 2

300 millis

adafruit_tsl2591.INTEGRATIONTIME_400MS = 3

400 millis

adafruit_tsl2591.INTEGRATIONTIME_500MS = 4

500 millis

adafruit_tsl2591.INTEGRATIONTIME_600MS = 5

600 millis

class adafruit_tsl2591.TSL2591(i2c, address=41)[source]

TSL2591 high precision light sensor.

  • i2c (I2C) – The I2C bus the device is connected to
  • address (int) – The I2C device address. Defaults to 0x29

Quickstart: Importing and using the device

Here is an example of using the TSL2591 class. First you will need to import the libraries to use the sensor

import board
import adafruit_tsl2591

Once this is done you can define your board.I2C object and define your sensor object

i2c = board.I2C()  # uses board.SCL and board.SDA
sensor = adafruit_tsl2591.TSL2591(i2c)

Now you have access to the lux, infrared visible and full_spectrum attributes

lux = sensor.lux
infrared = sensor.infrared
visible = sensor.visible
full_spectrum = sensor.full_spectrum

Disable the device and go into low power mode.


Put the device in a fully powered enabled mode.


Read the full spectrum (IR + visible) light and return its value as a 32-bit unsigned number.


Get and set the gain of the sensor. Can be a value of:

  • GAIN_LOW (1x)
  • GAIN_MED (25x)
  • GAIN_HIGH (428x)
  • GAIN_MAX (9876x)

Read the infrared light and return its value as a 16-bit unsigned number.


Get and set the integration time of the sensor. Can be a value of:

  • INTEGRATIONTIME_100MS (100 millis)
  • INTEGRATIONTIME_200MS (200 millis)
  • INTEGRATIONTIME_300MS (300 millis)
  • INTEGRATIONTIME_400MS (400 millis)
  • INTEGRATIONTIME_500MS (500 millis)
  • INTEGRATIONTIME_600MS (600 millis)

Read the sensor and calculate a lux value from both its infrared and visible light channels.


lux is not calibrated!


Read the raw luminosity from the sensor (both IR + visible and IR only channels) and return a 2-tuple of those values. The first value is IR + visible luminosity (channel 0) and the second is the IR only (channel 1). Both values are 16-bit unsigned numbers (0-65535).


Read the visible light and return its value as a 32-bit unsigned number.