nanoFramework.Iot.Device.Tsl256x 1.2.573

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package nanoFramework.Iot.Device.Tsl256x --version 1.2.573
                    
NuGet\Install-Package nanoFramework.Iot.Device.Tsl256x -Version 1.2.573
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="nanoFramework.Iot.Device.Tsl256x" Version="1.2.573" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="nanoFramework.Iot.Device.Tsl256x" Version="1.2.573" />
                    
Directory.Packages.props
<PackageReference Include="nanoFramework.Iot.Device.Tsl256x" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add nanoFramework.Iot.Device.Tsl256x --version 1.2.573
                    
#r "nuget: nanoFramework.Iot.Device.Tsl256x, 1.2.573"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package nanoFramework.Iot.Device.Tsl256x@1.2.573
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=nanoFramework.Iot.Device.Tsl256x&version=1.2.573
                    
Install as a Cake Addin
#tool nuget:?package=nanoFramework.Iot.Device.Tsl256x&version=1.2.573
                    
Install as a Cake Tool

TSL256x/TSL2560/TSL2561 - Illuminance sensor

TSL2560 and TSL2561 are illuminance sensor. They are light-to-digital converters that transform light intensity to a digital signal output capable of direct I2C (TSL2561) or SMBus (TSL2560) interface. Each device combines one broadband photodiode (visible plus infrared) and one infrared-responding photodiode on a single CMOS integrated circuit capable of providing a near-photopic response over an effective 20-bit dynamic range (16-bit resolution).

Two integrating ADCs convert the photodiode currents to a digital output that represents the irradiance measured on each channel. This digital output can be input to a microprocessor where illuminance (ambient light level) in lux is derived using an empirical formula to approximate the human eye response.

The TSL2560 device permits an SMB-Alert style interrupt, and the TSL2561 device supports a traditional level style interrupt that remains asserted until the firmware clears it.

Documentation

Board

image

Usage

Basic usage

TSL2560 and TSL2561 are designed to have an integration time and a gain for measuring the 2 ADC. The defaults are 402 milliseconds and a normal gain of x1.

The basic usage is the following:

I2cDevice i2cDevice = I2cDevice.Create(new I2cConnectionSettings(1, Tsl256x.DefaultI2cAddress));
Tsl256x tsl256X = new(i2cDevice, PackageType.Other);
tsl256X.IntegrationTime = IntegrationTime.Integration402Milliseconds;
tsl256X.Gain = Gain.Normal;
var lux = tsl256X.MeasureAndGetIlluminance();
Console.WriteLine($"Illuminance is {lux.Lux} Lux");

notes:

  • Be aware, there are 2 types of packaging the CS and the Others T, FN and CL. Refer to the documentation to understand which package you have on the board. This is an argument when creating the sensor as the calculation for the illuminance is different.
  • There are 3 different possible I2C addresses for this device depending on how the address pin is setup:
    • DefaultI2cAddress = 0x39: When address pin is to the ground
    • SecondI2cAddress = 0x29: When address pin is floating
    • ThirdI2cAddress = 0x49: When address pin is to VDD

Check the version

You can determine if you have a TSL2560 or TSL2561 version:

var ver = tsl256X.Version;
string msg = ver.Major & 0x01 == 0x01 ? $"This is a TSL2561, version {ver}" : $"This is a TSL2560, version {ver}";
Console.WriteLine(msg);

Using interruptions

You can set interruptions, you have different possible ones you can set thru the InterruptLevel:

  • OutputDisabled: will disable the interrupt
  • LevelInterrupt: will use the permanent interrupt you'll setup, see right after
  • SmbAlertCompliant: will send an alert on the SMB bus (version TSL2560 only) on address 0b0000_1100
  • TestMode: will generate an interruption for test purpose

The InterruptPersistence will allow you to select a specific timing for the interrupt:

  • EveryAdc: each time you have a measurement
  • AnyValueOutsideThreshold: any time a value will be outside of the setup threshold
  • OutOfRangeXXIntegrationTimePeriods: where XX is from 2 to 15, will interrupt only if the value remains outside more than XX times

The following example shows how to setup a basic interruption using test mode:

Console.WriteLine("Set interruption to test. Read the interrupt pin");
GpioController controller = new();
controller.OpenPin(PinInterrupt, PinMode.Input);
tsl256X.InterruptControl = InterruptControl.TestMode;
tsl256X.Enabled = true;
while (controller.Read(PinInterrupt) == PinValue.High)
{
    Thread.Sleep(1);
}

Console.WriteLine($"Interrupt detected, read the value to clear the interrupt");
tsl256X.GetRawChannels(out ushort ch0, out ushort ch1);

You can setup interruptions on thresholds as well. You first need to setup a threshold and then the type of interruptions.

// Adjust those values with a previous measurement to understand the conditions, find a level where then you can
// hide the sensor with your arm and make it going under the minimum level or vice versa with a lamp
tsl256X.SetThreshold(0x0000, 0x00FF);
tsl256X.InterruptPersistence = InterruptPersistence.OutOfRange06IntegrationTimePeriods;
tsl256X.InterruptControl = InterruptControl.LevelInterrupt;
tsl256X.Power = true;
while (controller.Read(PinInterrupt) == PinValue.High)
{
    Thread.Sleep(1);
}

Console.WriteLine($"Interrupt detected, read the value to clear the interrupt");
tsl256X.GetRawChannels(out ch0, out ch1);
Console.WriteLine($"Raw data channel 0 {ch0}, channel 1 {ch1}");

Manual integration

You can set a manual integration as well. Be aware that you won't be able to easily calculate an illuminance equivalent. You need to use the manual integration functions offered:

Console.WriteLine("This will use a manual integration for 2 seconds");
tsl256X.StartManualIntegration();
Thread.Sleep(2000);
tsl256X.StopManualIntegration();
tsl256X.GetRawChannels(out ch0, out ch1);
Console.WriteLine($"Raw data channel 0 {ch0}, channel 1 {ch1}");
Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.907 196 10/2/2025
1.2.889 168 7/28/2025
1.2.869 283 4/2/2025
1.2.864 276 4/2/2025
1.2.852 291 3/11/2025
1.2.846 286 3/10/2025
1.2.822 183 2/26/2025
1.2.775 199 2/4/2025
1.2.772 212 2/4/2025
1.2.755 226 1/31/2025
1.2.743 209 1/20/2025
1.2.737 173 1/13/2025
1.2.718 187 12/30/2024
1.2.704 184 12/18/2024
1.2.696 184 12/16/2024
1.2.673 190 10/23/2024
1.2.656 211 10/3/2024
1.2.639 225 9/6/2024
1.2.631 232 8/28/2024
1.2.613 231 8/9/2024
1.2.601 216 7/26/2024
1.2.590 216 7/17/2024
1.2.573 219 6/19/2024
1.2.570 217 6/14/2024
1.2.536 217 4/15/2024
1.2.534 203 4/13/2024
1.2.514 218 3/22/2024
1.2.494 226 2/28/2024
1.2.462 295 1/5/2024
1.2.458 260 12/20/2023
1.2.436 227 11/10/2023
1.2.416 169 11/8/2023
1.2.403 197 10/6/2023
1.2.396 209 9/27/2023
1.2.384 220 9/6/2023
1.2.378 230 8/16/2023
1.2.369 262 8/2/2023
1.2.363 239 7/28/2023
1.2.357 268 7/19/2023
1.2.354 281 7/14/2023
1.2.345 252 6/21/2023
1.2.341 249 6/14/2023
1.2.337 274 6/7/2023
1.2.335 296 6/2/2023
1.2.329 299 5/26/2023
1.2.316 289 5/16/2023
1.2.313 304 5/12/2023
1.2.302 303 5/10/2023
1.2.297 289 5/3/2023
1.2.273 380 3/17/2023
1.2.267 373 3/10/2023
1.2.263 350 3/8/2023
1.2.259 383 2/27/2023
1.2.256 392 2/24/2023
1.2.253 407 2/22/2023
1.2.222 459 1/9/2023
1.2.217 410 1/6/2023
1.2.212 442 1/5/2023
1.2.208 473 1/3/2023
1.2.203 461 12/28/2022
1.2.159 503 11/14/2022
1.2.153 489 11/5/2022
1.2.141 550 10/25/2022
1.2.128 541 10/22/2022
1.2.125 532 10/12/2022
1.2.87 638 9/15/2022
1.2.63 541 9/3/2022
1.2.47 587 8/15/2022
1.2.40 553 8/6/2022
1.2.38 590 8/5/2022
1.2.28 570 8/1/2022
1.2.13 571 7/24/2022
1.2.10 600 7/23/2022
1.1.142.3202 600 7/7/2022
1.1.133.52556 582 6/30/2022
1.1.121.35854 579 6/26/2022
1.1.118.19693 582 6/24/2022
1.1.116.8772 573 6/24/2022
1.1.102.51394 559 6/15/2022
1.1.99.36719 552 6/14/2022
1.1.97.17326 568 6/13/2022
1.1.92.53000 576 6/8/2022
1.1.72.29765 578 5/31/2022
1.1.61.27737 615 5/25/2022
1.1.58.10097 600 5/23/2022
1.1.54.28879 579 5/23/2022
1.1.40 624 5/5/2022
1.1.3 607 4/15/2022
1.1.1 602 4/14/2022
1.0.300 623 4/3/2022
1.0.288-preview.113 230 3/25/2022
1.0.288-preview.107 225 3/24/2022
1.0.288-preview.104 218 3/22/2022
1.0.288-preview.103 221 3/21/2022
1.0.288-preview.99 227 3/18/2022
1.0.288-preview.94 264 3/15/2022
1.0.288-preview.77 260 2/27/2022
1.0.288-preview.75 223 2/26/2022
1.0.288-preview.63 258 2/16/2022
1.0.288-preview.61 263 2/12/2022
1.0.288-preview.58 250 2/10/2022
1.0.288-preview.53 251 2/9/2022
1.0.288-preview.48 277 2/4/2022
1.0.288-preview.41 252 1/31/2022
1.0.288-preview.22 238 1/27/2022
1.0.288-preview.20 251 1/27/2022
1.0.288-preview.18 281 1/27/2022
1.0.272 638 1/10/2022
1.0.260 456 12/10/2021
1.0.259 462 12/9/2021
1.0.258 452 12/7/2021
1.0.231 477 10/27/2021