AS7265x Triad Sensor

For product https://www.sparkfun.com/products/15050, I presume that if I simply don’t activate the LEDs I can use this to detect the spectrum of light emitted from something with active light emissions. Such as use it to get a pretty decent spectrum peaks and intensity for an LED, as to what wavelengths it outputs. At least for each of the channels. Obviously I’d need a MUCH more expensive instrument to detect a full, discrete, spectrum output graph.

Correct, and if you wanted too you could even cut the LED jumpers to (semi) permanently disable them if needed.

That’s what I figured I could do with this board. Really neat how much is packed onto it! And no need to permanently disable them, since I can turn them on/off via software. It’d be useful to have them still working for if I want to do reflectance checks as well.

Adafruit does have a [AS7341 smaller board, but without digging into the specs sheet, looks like while it might individually have a fairly broad wavelength points, including flicker, this tri-board looks like it has better coverage, and probably finer coverage, of different wavelengths. Quite a bit more expensive, but that’s what you get for more hardware!

On the whole, depends on what you need, but I think this tri-board is the way to go for a more general purpose broad use-case. Thanks!](Adafruit AS7341 10-Channel Light / Color Sensor Breakout [STEMMA QT / Qwiic] : ID 4698 : Adafruit Industries, Unique & fun DIY electronics and kits)

And no need to permanently disable them

The power LED is not under software control. You have to cut the jumper to disable it.

That was the very first thing I did, after running the sensor through the full operational tests.

The https://learn.sparkfun.com/tutorials/sp … okup-guide documentation and function calls available seem to indicate they can be. takeMeasurements() vs takeMeasurementsWithBulb(), enableBulb(uint8_t device) and disableBulb(uint8_t device).

From the [Hookup Guide:

In addition to the illumination LEDs, there is a power LED and a status LED. The blue status LED indicates various states of the AS72651 sensor and can be disabled through the SparkFun library. The red power LED is provided to indicate the board is properly energized. If the red light is interfering with readings it can be disabled by cutting the neighboring jumper.

The SECOND thing I did after testing for full functionality was to disable the blue status LED, because it doesn’t seem to provide any useful information.](Spectral Triad (AS7265x) Hookup Guide - SparkFun Learn)

Oh sorry, didn’t completely read, thought you were talking about the RGB/White/IR LEDs, not the power/status LEDs. Yeah, might need to cut/desolder those or something. Or cover with some tape or something.

sorry for this very basic question; I’d like to disable the bulbs but I’m not clear on exactly how to do this, I see the example: void disableBulb(uint8_t device); but I’m not clear how /where one uses this in a sketch in order to disable all three LED’s (I’m analyzing light through a filter to see the wavelengths emitted and so don’t need the LEDs)

adycousins:
sorry for this very basic question; I’d like to disable the bulbs but I’m not clear on exactly how to do this, I see the example: void disableBulb(uint8_t device); but I’m not clear how /where one uses this in a sketch in order to disable all three LED’s (I’m analyzing light through a filter to see the wavelengths emitted and so don’t need the LEDs)

https://learn.sparkfun.com/tutorials/sp … okup-guide

thanks - I’ve read the hookup guide and have got the board working, however it doesn’t offer an explanation of 'how /where one uses"'void disableBulb(uint8_t device); ’ in a sketch"

Put the call wherever it makes sense to turn on or off the lights.

In setup() you can turn the lights off permanently, at program startup. The “settings” example in the Sparkfun library gives examples.

jremington:
Put the call wherever it makes sense to turn on or off the lights.

In setup() you can turn the lights off permanently, at program startup. The “settings” example in the Sparkfun library gives examples.

Thanks for the reply, however the settings example doesn't actually include example of usage of the code to disable the bulbs, only to set their current. What I'm not clear about is whether the line of code: 'void disableBulb(uint8_t device);' requires anything else to specify which LED's to turn off (0,1,2) or whether this line of code in setup will disable all three LED's

When you have questions about functions in a library, it often helps to glance through the library source code. In the first few lines of the library source file named SparkFun_AS7265X.cpp, you will find the following statements.

Take note of the disableBulb() calls.

//Initializes the sensor with basic settings
//Returns false if sensor is not detected
boolean AS7265X::begin(TwoWire &wirePort)
{
  _i2cPort = &wirePort;
  _i2cPort->begin(); //This resets any setClock() the user may have done

  if (isConnected() == false)
    return (false); //Check for sensor presence

  //Check to see if both slaves are detected
  uint8_t value = virtualReadRegister(AS7265X_DEV_SELECT_CONTROL);
  if ((value & 0b00110000) == 0)
    return (false); //Test if Slave1 and 2 are detected. If not, bail.

  setBulbCurrent(AS7265X_LED_CURRENT_LIMIT_12_5MA, AS7265x_LED_WHITE);
  setBulbCurrent(AS7265X_LED_CURRENT_LIMIT_12_5MA, AS7265x_LED_IR);
  setBulbCurrent(AS7265X_LED_CURRENT_LIMIT_12_5MA, AS7265x_LED_UV);

  disableBulb(AS7265x_LED_WHITE); //Turn off bulb to avoid heating sensor
  disableBulb(AS7265x_LED_IR);
  disableBulb(AS7265x_LED_UV);

jremington:
When you have questions about functions in a library, it often helps to glance through the library source code. In the first few lines of the library source file named SparkFun_AS7265X.cpp, you will find the following statements.

Take note of the disableBulb() calls.

//Initializes the sensor with basic settings

//Returns false if sensor is not detected
boolean AS7265X::begin(TwoWire &wirePort)
{
_i2cPort = &wirePort;
_i2cPort->begin(); //This resets any setClock() the user may have done

if (isConnected() == false)
return (false); //Check for sensor presence

//Check to see if both slaves are detected
uint8_t value = virtualReadRegister(AS7265X_DEV_SELECT_CONTROL);
if ((value & 0b00110000) == 0)
return (false); //Test if Slave1 and 2 are detected. If not, bail.

setBulbCurrent(AS7265X_LED_CURRENT_LIMIT_12_5MA, AS7265x_LED_WHITE);
setBulbCurrent(AS7265X_LED_CURRENT_LIMIT_12_5MA, AS7265x_LED_IR);
setBulbCurrent(AS7265X_LED_CURRENT_LIMIT_12_5MA, AS7265x_LED_UV);

disableBulb(AS7265x_LED_WHITE); //Turn off bulb to avoid heating sensor
disableBulb(AS7265x_LED_IR);
disableBulb(AS7265x_LED_UV);

Thanks for this - I’d looked through the Examples, I wasn’t aware that the details I required were elsewhere - and the line of code oin the hookup guide ( void disableBulb(uint8_t device); ) doesn’t seem to appear anywhere so that left me somewhat baffled.

I seem to have managed to disable the LEDs (I think) using the following in the setup

  sensor.disableIndicator(); //Turn off the blue status LED
  sensor.disableBulb(AS7265x_LED_WHITE); //Turn off bulbs
  sensor.disableBulb(AS7265x_LED_IR);
  sensor.disableBulb(AS7265x_LED_UV);

If the LEDs are off, that would be a good indication.