ISL29125 RGB light sensor

Device driver for the ISL29125 RGB light sensor.

Description

The device supports level conversion in 12, and 16 bit depth per channel. Selecting a higher precision results in a longer conversion time.

The driver uses the color_rgb_t color definition from color.h for value representation. It does not depend on the color module however.

Usage

Examine tests/driver_isr29125 for an exemplary application using this driver.

Caveats

A GPIO pin definition has been included in the interface for future compatibility only.

  • The driver does not support SYNC mode at the moment.
  • The driver supports polling only, i.e. interrupt mode is currently not supported.

enum isl29125_mode_t
ISL29125_MODE_DOWN = 0x00
ADC powered down.
ISL29125_MODE_STANDBY = 0x04
AD conversion not performed.
ISL29125_MODE_RGB = 0x05
RGB conversion.
ISL29125_MODE_R = 0x02
red conversion only
ISL29125_MODE_G = 0x01
green conversion only
ISL29125_MODE_B = 0x03
blue conversion only
ISL29125_MODE_RG = 0x06
red and green conversion only
ISL29125_MODE_GB = 0x07
green and blue conversion only
enum isl29125_range_t
ISL29125_RANGE_375 = 0x00
range: 5.7m - 375 lux
ISL29125_RANGE_10K = 0x08
range: 0.152 - 10,000 lux
enum isl29125_resolution_t
ISL29125_RESOLUTION_12 = 0x10
resolution: 12 bit
ISL29125_RESOLUTION_16 = 0x00
resolution: 16 bit
enum isl29125_interrupt_status_t
ISL29125_INTERRUPT_STATUS_NONE = 0x00
No interrupt.
ISL29125_INTERRUPT_STATUS_GREEN = 0x01
GREEN interrupt.
ISL29125_INTERRUPT_STATUS_RED = 0x02
RED interrupt.
ISL29125_INTERRUPT_STATUS_BLUE = 0x03
BLUE interrupt.
enum isl29125_interrupt_persist_t
ISL29125_INTERRUPT_PERSIST_1 = (0x00 << 2)

Int.

Persist: Number of integration cycle 1

ISL29125_INTERRUPT_PERSIST_2 = (0x01 << 2)

Int.

Persist: Number of integration cycle 2

ISL29125_INTERRUPT_PERSIST_4 = (0x02 << 2)

Int.

Persist: Number of integration cycle 4

ISL29125_INTERRUPT_PERSIST_8 = (0x03 << 2)

Int.

Persist: Number of integration cycle 8

enum isl29125_interrupt_conven_t
ISL29125_INTERRUPT_CONV_DIS = (0x0 << 4)
RGB Conversion done to ~INT Control disable.
ISL29125_INTERRUPT_CONV_EN = (0x1 << 4)
RGB Conversion done to ~INT Control enable.
int isl29125_init(isl29125_t * dev, const isl29125_params_t * params)

Initialize a new ISL29125 device.

Parameters

dev:device descriptor of an ISL29125 device
params:initialization parameters

Return values

  • 0 on success
  • -1 on error
int isl29125_init_int(isl29125_t * dev, isl29125.h::isl29125_interrupt_status_t interrupt_status, isl29125.h::isl29125_interrupt_persist_t interrupt_persist, isl29125.h::isl29125_interrupt_conven_t interrupt_conven, uint16_t lower_threshold, uint16_t higher_threshold, gpio.h::gpio_cb_t cb, void * arg)

Initialize interrupts.

Parameters

dev:device descriptor of an ISL29125 device
interrupt_status:
 Interrupt status
interrupt_persist:
 Interrupt persistency
interrupt_conven:
 RGB conversion done to interrupt control, enable
lower_threshold:
 Lower interrupt threshold
higher_threshold:
 Higher interrupt threshold
cb:Callback function on interrupts
arg:Argument passed to the callback function

Return values

  • 0 on success
  • -1 on error
void isl29125_read_rgb_lux(const isl29125_t * dev, isl29125_rgb_t * dest)

Read RGB values from device.

Parameters

dev:device descriptor of an ISL29125 device
dest:pointer to lux RGB color object data is written to

void isl29125_read_rgb_color(const isl29125_t * dev, color_rgb_t * dest)

Read color values from device.

Parameters

dev:device descriptor of an ISL29125 device
dest:pointer to RGB color object data is written to

void isl29125_set_mode(const isl29125_t * dev, isl29125.h::isl29125_mode_t mode)

Set the device’s operation mode.

Parameters

dev:device descriptor of an ISL29125 device
mode:operation mode

int isl29125_read_irq_status(const isl29125_t * dev)

Read isl29125 interrupt status.

Parameters

dev:device descriptor of an ISL29125 device

Return values

  • interrupt status
struct isl29125_rgb_t

Data type for storing lux RGB sensor readings.

float red

red lux value

float green

green lux value

float blue

blue lux value

struct isl29125_params_t

Device parameters for ISL29125 sensors.

i2c.h::i2c_t i2c

I2C device the sensor is connected to.

gpio.h::gpio_t gpio

GPIO pin for interrupt/sync mode.

isl29125.h::isl29125_range_t range

measurement range

isl29125.h::isl29125_mode_t mode

AD conversion mode.

isl29125.h::isl29125_resolution_t res

AD conversion resolution.

struct isl29125_t

Device descriptor for ISL29125 sensors.

isl29125_params_t params

device parameters