Skip to content

Commit a1122aa

Browse files
committed
add: apds9999 support for new carrier revisions
1 parent 2c6ed4a commit a1122aa

File tree

4 files changed

+51
-7
lines changed

4 files changed

+51
-7
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ category=Communication
88
url=https://github.com/arduino-libraries/Arduino_ScienceKitCarrier
99
architectures=mbed,mbed_nano,esp32
1010
includes=Arduino_ScienceKitCarrier.h
11-
depends=Arduino_APDS9960,ArduinoBLE,WiFiNINA,INA2xx,Arduino_BMI270_BMM150,bsec2,OneWireNg
11+
depends=Arduino_APDS9960,ArduinoBLE,WiFiNINA,INA2xx,Arduino_BMI270_BMM150,bsec2,OneWireNg,Arduino_APDS9999

src/Arduino_ScienceKitCarrier.cpp

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ ScienceKitCarrier::ScienceKitCarrier(){
3737
board_resolution = BOARD_RESOLUTION;
3838

3939
apds9960 = new APDS9960(Wire,INT_APDS9960);
40+
apds9999 = new Arduino_APDS9999(Wire);
4041
proximity=0;
4142
r=0;
4243
g=0;
@@ -279,19 +280,53 @@ int ScienceKitCarrier::getInputB(){
279280
/********************************************************************/
280281

281282
int ScienceKitCarrier::beginAPDS(){
282-
if (!apds9960->begin()) {
283-
return ERR_BEGIN_APDS;
283+
if (!apds9999->begin()){
284+
if (!apds9960->begin()) {
285+
return ERR_BEGIN_APDS;
286+
}
287+
else{
288+
color_sensor_used = APDS9960_VERSION;
289+
}
284290
}
291+
else{
292+
apds9999->enableColorSensor();
293+
apds9999->enableProximitySensor();
294+
apds9999->setGain(APDS9999_GAIN_1X);
295+
apds9999->setLSResolution(APDS9999_LS_RES_16B);
296+
apds9999->setLSRate(APDS9999_LS_RATE_25MS);
297+
color_sensor_used = APDS9999_VERSION;
298+
}
299+
#ifdef ESP32
300+
for(int i=0; i<=color_sensor_used; i++){
301+
digitalWrite(LED_GREEN, LOW);
302+
delay(100);
303+
digitalWrite(LED_GREEN, HIGH);
304+
delay(100);
305+
}
306+
digitalWrite(LED_GREEN, HIGH);
307+
#endif
285308
return 0;
286309
}
287310

288311
void ScienceKitCarrier::updateAPDS(){
289312
wire_lock;
290-
if (apds9960->proximityAvailable()){
291-
proximity=apds9960->readProximity();
313+
if (color_sensor_used==APDS9960_VERSION){
314+
if (apds9960->proximityAvailable()){
315+
proximity=apds9960->readProximity();
316+
}
317+
if (apds9960->colorAvailable()){
318+
apds9960->readColor(r,g,b,c);
319+
}
292320
}
293-
if (apds9960->colorAvailable()){
294-
apds9960->readColor(r,g,b,c);
321+
if (color_sensor_used==APDS9999_VERSION){
322+
r = apds9999->getRed()*4097/65535.0;
323+
g = apds9999->getGreen()*4097/262144.0;
324+
b = apds9999->getBlue()*4097/131072.0;
325+
c = apds9999->getIR()*4097/4096.0;
326+
proximity = 255 - apds9999->getProximity();
327+
if (proximity>255){
328+
proximity = 0;
329+
}
295330
}
296331
wire_unlock;
297332
}

src/Arduino_ScienceKitCarrier.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323
#include <Arduino.h>
2424

25+
#if !defined(ARDUINO_NANO_RP2040_CONNECT) && !defined(ESP32)
26+
#error "This product is compatible only with Arduino® Nano RP2040 Connect and Arduino® Nano ESP32
27+
#endif
28+
2529
#ifdef ARDUINO_NANO_RP2040_CONNECT
2630
#include "WiFiNINA.h"
2731
#include "mbed.h"
@@ -31,6 +35,7 @@
3135

3236
#include <Wire.h>
3337
#include "Arduino_APDS9960.h"
38+
#include "Arduino_APDS9999.h"
3439
#include "INA.h"
3540

3641
#include "bsec2.h"
@@ -75,7 +80,9 @@ class ScienceKitCarrier{
7580
uint8_t timer_inputA;
7681

7782
APDS9960 * apds9960;
83+
Arduino_APDS9999 * apds9999;
7884
int r,g,b,c, proximity;
85+
int color_sensor_used;
7986

8087
INA_Class * ina;
8188
float voltage, current;

src/utils/Arduino_ScienceKitCarrier_definitions.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737

3838
// APDS9960
3939
#define INT_APDS9960 9
40+
#define APDS9960_VERSION 0
41+
#define APDS9999_VERSION 1
4042

4143
// INA
4244
const uint32_t SHUNT_MICRO_OHM{100000}; // check schematic R20

0 commit comments

Comments
 (0)