Además de leer colores, gestos y luz ambiental, el sensor APDS9960es capaz de leer la proximidad de un objecto al mismo.
El primer paso es incluir la librería
#include <Arduino_APDS9960.h>
Inicializar el sensor a través de la instrucción APDS.bgin() que devolverá true si todo va bien o false si hay algún error durante la inicialización.
if (!APDS.begin()) {
Serial.println("Error al inicializar el sensor");
}
Para saber si hay alguna lectura disponible se pude usar la función APDS.proximityAvailable()
if (APDS.proximityAvailable()) {
}
Para obtener el valor se usa APDS.readProximity()
int proximity = APDS.readProximity();
La lectura devuelve un int cuyo valor puede ser positivo entre 0 y 255 (aunque en mis pruebas no he logrado que pase de 252) que indica la distancia (a menor valor más cerca) o -1 que indica una lectura errónea del sensor. La lectura no viene en ninguna unidad de medida y habrá que convertirla realizando pruebas en una situación ambiental similar a la que se vaya a usar. De todas formas este valor hay que tomarlo más como una referencia que como un valor exacto. Por ejemplo los valores que pasan e 250 pueden interpretarse como («no hay nada cerca»), el valor 0 no indica «sobre el sensor» se alcanza con el objeto a unos 3 o 4 centímetros del mismo.
Veamos todo el código junto:
#include <Arduino_APDS9960.h>
void setup() {
Serial.begin(9600);
while (!Serial);
if (!APDS.begin()) {
Serial.println("Error al inicializar el sensor");
}
}
void loop() {
// comprobar si hay una lectura disponible
if (APDS.proximityAvailable()) {
int proximity = APDS.readProximity();
Serial.println(proximity);
}
delay(500);
}