Go to the documentation of this file.
28 #ifndef SPECTROMETER2_H
29 #define SPECTROMETER2_H
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
59 #define SPECTROMETER2_REG_DEVICE_ID 0x00
60 #define SPECTROMETER2_REG_REVISION_ID 0x01
61 #define SPECTROMETER2_REG_INTERRUPT_CTRL 0x02
62 #define SPECTROMETER2_REG_ALS_CTRL 0x03
63 #define SPECTROMETER2_REG_ALS_PERIOD 0x04
64 #define SPECTROMETER2_REG_ALS_CH1_DATA_H 0x06
65 #define SPECTROMETER2_REG_ALS_CH1_DATA_M 0x07
66 #define SPECTROMETER2_REG_ALS_CH1_DATA_L 0x08
67 #define SPECTROMETER2_REG_ALS_CH2_DATA_H 0x0A
68 #define SPECTROMETER2_REG_ALS_CH2_DATA_M 0x0B
69 #define SPECTROMETER2_REG_ALS_CH2_DATA_L 0x0C
70 #define SPECTROMETER2_REG_ALS_CH3_DATA_H 0x0E
71 #define SPECTROMETER2_REG_ALS_CH3_DATA_M 0x0F
72 #define SPECTROMETER2_REG_ALS_CH3_DATA_L 0x10
73 #define SPECTROMETER2_REG_ALS_CH4_DATA_H 0x12
74 #define SPECTROMETER2_REG_ALS_CH4_DATA_M 0x13
75 #define SPECTROMETER2_REG_ALS_CH4_DATA_L 0x14
76 #define SPECTROMETER2_REG_ALS_CH5_DATA_H 0x16
77 #define SPECTROMETER2_REG_ALS_CH5_DATA_M 0x17
78 #define SPECTROMETER2_REG_ALS_CH5_DATA_L 0x18
79 #define SPECTROMETER2_REG_ALS_CH6_DATA_H 0x1A
80 #define SPECTROMETER2_REG_ALS_CH6_DATA_M 0x1B
81 #define SPECTROMETER2_REG_ALS_CH6_DATA_L 0x1C
82 #define SPECTROMETER2_REG_ALS_EXPOSURE_M 0x1D
83 #define SPECTROMETER2_REG_ALS_EXPOSURE_L 0x1E
84 #define SPECTROMETER2_REG_ALS_GAIN_CH1 0x25
85 #define SPECTROMETER2_REG_ALS_GAIN_CH2 0x26
86 #define SPECTROMETER2_REG_ALS_GAIN_CH3 0x27
87 #define SPECTROMETER2_REG_ALS_GAIN_CH4 0x28
88 #define SPECTROMETER2_REG_ALS_GAIN_CH5 0x29
89 #define SPECTROMETER2_REG_ALS_GAIN_CH6 0x2A
90 #define SPECTROMETER2_REG_CHANNEL6_ENABLE 0x2D
91 #define SPECTROMETER2_REG_ALS_CHANNEL_ENABLE 0x2E
92 #define SPECTROMETER2_REG_AC_MODE_CTRL 0x31
93 #define SPECTROMETER2_REG_PEDESTAL_VALUE 0x32
94 #define SPECTROMETER2_REG_SDA_DRV_CFG 0x3C
95 #define SPECTROMETER2_REG_GPIO1_DRV_CFG 0x41
113 #define SPECTROMETER2_INTR_STATUS 0x02
114 #define SPECTROMETER2_CLR_INTR_SET 0x01
115 #define SPECTROMETER2_CLR_INTR_CLEAR 0x00
121 #define SPECTROMETER2_EXPOSURE_TIME_MS_MAX 1638.4
122 #define SPECTROMETER2_EXPOSURE_TIME_MS_DEFAULT 160.0
123 #define SPECTROMETER2_EXPOSURE_TIME_MS_MIN 1.6
124 #define SPECTROMETER2_EXPOSURE_TIME_MS_LSB 1.6
125 #define SPECTROMETER2_EXPOSURE_TIME_RES 0x03FF
131 #define SPECTROMETER2_IM_PERIOD_MS_MAX 5227.5
132 #define SPECTROMETER2_IM_PERIOD_MS_DEFAULT 200.0
133 #define SPECTROMETER2_IM_PERIOD_MS_MIN 0.0
134 #define SPECTROMETER2_IM_PERIOD_MS_LSB 20.5
135 #define SPECTROMETER2_IM_PERIOD_RES 0xFF
141 #define SPECTROMETER2_AGAIN_66p6X 0x01
142 #define SPECTROMETER2_AGAIN_50X 0x02
143 #define SPECTROMETER2_AGAIN_33X 0x03
144 #define SPECTROMETER2_AGAIN_25X 0x04
145 #define SPECTROMETER2_AGAIN_16X 0x05
146 #define SPECTROMETER2_AGAIN_10X 0x06
147 #define SPECTROMETER2_AGAIN_7p1X 0x07
148 #define SPECTROMETER2_AGAIN_5X 0x08
149 #define SPECTROMETER2_AGAIN_3p33X 0x09
150 #define SPECTROMETER2_AGAIN_2p5X 0x0A
151 #define SPECTROMETER2_AGAIN_1p67X 0x0B
152 #define SPECTROMETER2_AGAIN_1p25X 0x0C
153 #define SPECTROMETER2_AGAIN_1X 0x0D
154 #define SPECTROMETER2_AGAIN_0p83X 0x0E
155 #define SPECTROMETER2_AGAIN_0p71X 0x0F
156 #define SPECTROMETER2_AGAIN_BIT_MASK 0x0F
162 #define SPECTROMETER2_CHANNEL6_DISABLE 0x00
163 #define SPECTROMETER2_CHANNEL6_ENABLE 0x01
169 #define SPECTROMETER2_NO_CHANNEL_ENABLED 0x00
170 #define SPECTROMETER2_CHANNEL1_ENABLE 0x01
171 #define SPECTROMETER2_CHANNEL2_ENABLE 0x02
172 #define SPECTROMETER2_CHANNEL3_ENABLE 0x04
173 #define SPECTROMETER2_CHANNEL4_ENABLE 0x08
174 #define SPECTROMETER2_CHANNEL5_ENABLE 0x10
175 #define SPECTROMETER2_ALL_CHANNELS_ENABLE 0x1F
181 #define SPECTROMETER2_ALS_MODE_SINGLE 0x00
182 #define SPECTROMETER2_ALS_MODE_CONTINUOUS 0x06
183 #define SPECTROMETER2_ALS_STOP 0x00
184 #define SPECTROMETER2_ALS_START 0x01
190 #define SPECTROMETER2_UNKNOWN_COLOR 0
191 #define SPECTROMETER2_RED_COLOR 1
192 #define SPECTROMETER2_YELLOW_COLOR 2
193 #define SPECTROMETER2_GREEN_COLOR 3
194 #define SPECTROMETER2_CYAN_COLOR 4
195 #define SPECTROMETER2_BLUE_COLOR 5
196 #define SPECTROMETER2_MAGENTA_COLOR 6
197 #define SPECTROMETER2_WHITE_COLOR 7
198 #define SPECTROMETER2_BLACK_COLOR 8
204 #define SPECTROMETER2_WHITE_COLOR_LIGHTNESS 95
205 #define SPECTROMETER2_BLACK_COLOR_LIGHTNESS 5
206 #define SPECTROMETER2_YELLOW_COLOR_HUE_ANGLE 30
207 #define SPECTROMETER2_GREEN_COLOR_HUE_ANGLE 90
208 #define SPECTROMETER2_CYAN_COLOR_HUE_ANGLE 150
209 #define SPECTROMETER2_BLUE_COLOR_HUE_ANGLE 210
210 #define SPECTROMETER2_MAGENTA_COLOR_HUE_ANGLE 270
211 #define SPECTROMETER2_RED_COLOR_HUE_ANGLE 330
217 #define SPECTROMETER2_HSL_HUE_RESOLUTION 360
218 #define SPECTROMETER2_HSL_SATURATION_RESOLUTION 100
219 #define SPECTROMETER2_HSL_LIGHTNESS_RESOLUTION 100
225 #define SPECTROMETER2_DEVICE_ID 0x70
232 #define SPECTROMETER2_DEVICE_ADDRESS 0x20
250 #define SPECTROMETER2_MAP_MIKROBUS( cfg, mikrobus ) \
251 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
252 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
253 cfg.an = MIKROBUS( mikrobus, MIKROBUS_AN ); \
254 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
548 #endif // SPECTROMETER2_H
uint32_t green
Definition: spectrometer2.h:303
uint32_t ir
Definition: spectrometer2.h:304
Spectrometer 2 HSL color data object.
Definition: spectrometer2.h:314
uint32_t blue
Definition: spectrometer2.h:302
pin_name_t an
Definition: spectrometer2.h:286
Spectrometer 2 Click context object.
Definition: spectrometer2.h:264
err_t spectrometer2_write_register(spectrometer2_t *ctx, uint8_t reg, uint8_t data_in)
Spectrometer 2 write register function.
uint32_t clear
Definition: spectrometer2.h:305
digital_in_t an
Definition: spectrometer2.h:266
i2c_master_t i2c
Definition: spectrometer2.h:270
err_t spectrometer2_get_data(spectrometer2_t *ctx, spectrometer2_als_channels_t *als_channels)
Spectrometer 2 get data function.
void spectrometer2_rgbc_to_hsl(spectrometer2_als_channels_t *rgbc, spectrometer2_hsl_t *hsl)
Spectrometer 2 rgbc to hsl function.
pin_name_t sda
Definition: spectrometer2.h:284
pin_name_t scl
Definition: spectrometer2.h:283
err_t spectrometer2_set_exposure_time(spectrometer2_t *ctx, float exp_time)
Spectrometer 2 set exposure time function.
@ SPECTROMETER2_ERROR
Definition: spectrometer2.h:328
uint32_t red
Definition: spectrometer2.h:300
err_t spectrometer2_set_inter_measurement_period(spectrometer2_t *ctx, float im_period)
Spectrometer 2 set inter measurement period function.
uint8_t spectrometer2_get_an_pin(spectrometer2_t *ctx)
Spectrometer 2 get an pin function.
uint8_t spectrometer2_get_color(spectrometer2_hsl_t *hsl)
Spectrometer 2 get color function.
err_t spectrometer2_read_register(spectrometer2_t *ctx, uint8_t reg, uint8_t *data_out)
Spectrometer 2 read register function.
uint32_t i2c_speed
Definition: spectrometer2.h:289
float hue
Definition: spectrometer2.h:315
float lightness
Definition: spectrometer2.h:317
err_t spectrometer2_default_cfg(spectrometer2_t *ctx)
Spectrometer 2 default configuration function.
uint8_t i2c_address
Definition: spectrometer2.h:290
uint8_t spectrometer2_get_int_pin(spectrometer2_t *ctx)
Spectrometer 2 get int pin function.
uint8_t slave_address
Definition: spectrometer2.h:273
Spectrometer 2 ALS channels data object.
Definition: spectrometer2.h:299
err_t spectrometer2_generic_read(spectrometer2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Spectrometer 2 I2C reading function.
float saturation
Definition: spectrometer2.h:316
pin_name_t int_pin
Definition: spectrometer2.h:287
err_t spectrometer2_check_communication(spectrometer2_t *ctx)
Spectrometer 2 check communication function.
digital_in_t int_pin
Definition: spectrometer2.h:267
err_t spectrometer2_init(spectrometer2_t *ctx, spectrometer2_cfg_t *cfg)
Spectrometer 2 initialization function.
uint32_t visible
Definition: spectrometer2.h:301
err_t spectrometer2_generic_write(spectrometer2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Spectrometer 2 I2C writing function.
err_t spectrometer2_clear_interrupt(spectrometer2_t *ctx)
Spectrometer 2 clear interrupt function.
Spectrometer 2 Click configuration object.
Definition: spectrometer2.h:282
void spectrometer2_cfg_setup(spectrometer2_cfg_t *cfg)
Spectrometer 2 configuration object setup function.
@ SPECTROMETER2_OK
Definition: spectrometer2.h:327
spectrometer2_return_value_t
Spectrometer 2 Click return value data.
Definition: spectrometer2.h:326