Description:
Le module APDS9960 est capteur 4-en-1 ultra-compact intègre la détection de gestes, la détection de proximité, la détection de lumière ambiante, ainsi qu’un capteur RGB pour identifier les couleurs. Il communique via l’interface I2C, ce qui le rend parfaitement compatible avec les microcontrôleurs tels qu’Arduino, Raspberry Pi, ESP32, etc.
Caractéristiques techniques du module APDS9960:
- Tension d’alimentation : 2,4V à 3,6V (généralement régulé à 3,3V sur les modules).
- Protocole de communication : Bus I2C avec une broche d’interruption (
INT) optionnelle. - Luminosité et Couleur (ALS/RGB) : Mesure l’intensité de la lumière rouge, verte, bleue et claire avec filtre anti-UV/IR.
- Capteur de Proximité : Mesure la distance d’un objet (jusqu’à environ 10-20 cm) grâce à une LED infrarouge intégrée.
- Détection de Gestes : Reconnaît 4 directions de mouvements (Haut, Bas, Gauche, Droite) ainsi que le rapprochement/éloignement.
🔌 Brochage Standard (Pinout):
- VCC : Alimentation positive (3,3V MAX, attention à ne pas appliquer du 5V directement sans régulateur).
- GND : Masse (0V).
- SDA : Ligne de données I2C (nécessite un niveau logique de 3,3V).
- SCL : Ligne d’horloge I2C (nécessite un niveau logique de 3,3V).
- INT : Broche d’interruption active à l’état bas (permet de réveiller le microcontrôleur lors d’un geste).
- VL : Alimentation optionnelle pour la LED IR interne (souvent reliée à VCC par un pont de soudure sur la carte).
💻 Utilisation avec Arduino (Exemple Express):
- VCC ➡️ 3.3V
- GND ➡️ GND
- SDA ➡️ A4 (avec adaptation de niveau)
- SCL ➡️ A5 (avec adaptation de niveau)
- INT ➡️ Broche D2 (interruption matérielle
INT0)
Code d’exemple de base (Détection de gestes):
#include <Wire.h>
#include <SparkFun_APDS9960.h>
#include <Wire.h>
#include <SparkFun_APDS9960.h>
#define APDS9960_INT 2 // Broche interruption
SparkFun_APDS9960 apds = SparkFun_APDS9960();
volatile bool isGestureAvailable = false;
void setup() {
Serial.begin(9600);
pinMode(APDS9960_INT, INPUT);
// Initialisation de l'interruption
attachInterrupt(digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING);
// Initialisation du capteur
if (apds.init()) {
Serial.println(F("APDS-9960 initialisé !"));
}
// Activation du capteur de gestes (avec interruptions)
if (apds.enableGestureSensor(true)) {
Serial.println(F("Détection de gestes activée."));
}
}
void loop() {
if (isGestureAvailable) {
detachInterrupt(digitalPinToInterrupt(APDS9960_INT));
handleGesture();
isGestureAvailable = false;
attachInterrupt(digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING);
}
}
void interruptRoutine() {
isGestureAvailable = true;
}
void handleGesture() {
if (apds.isGestureAvailable()) {
switch (apds.readGesture()) {
case DIR_UP: Serial.println(F("HAUT")); break;
case DIR_DOWN: Serial.println(F("BAS")); break;
case DIR_LEFT: Serial.println(F("GAUCHE")); break;
case DIR_RIGHT: Serial.println(F("DROITE")); break;
default: Serial.println(F("Geste inconnu")); break;
}
}
}






Avis
Il n’y a pas encore d’avis.