Touchless gesture control
Map up, down, left, and right swipes to control media playback, page through a menu, or dim lights without touching anything.
A single-chip I2C optical sensor from Broadcom that combines ambient light, RGB color, proximity, and gesture detection in one package.

The APDS-9960 is a digital optical sensor from Broadcom (formerly Avago) that packs four functions into one part: ambient light sensing, RGB color sensing, proximity detection, and gesture recognition. Everything reports over I2C at the fixed address 0x39, so no analog front-end or ADC of your own is needed. It is the same sensor Samsung used for proximity and gesture in the Galaxy S5.
An integrated IR LED lit against four directional photodiodes lets the part sense an object approaching (proximity) and decode simple gestures (up, down, left, right, near, and far) from the timing of the signal across those diodes. The color and ambient-light path uses UV and IR blocking filters feeding separate red, green, blue, and clear channels, each with 16-bit output. An active-low INT pin flags proximity, gesture, or light-threshold events so the host does not have to poll.
This Adafruit breakout adds an onboard 3.3V regulator, I2C level shifting, and bus pull-ups, so it accepts a 3-5V supply on VIN and talks to both 3.3V and 5V logic. That is a meaningful difference from the bare APDS-9960 die, which is a strict 3.3V part. Proximity works out to roughly 10-20 cm and gestures are read at a similar swipe distance.
| Pin | Function | Type |
|---|---|---|
VIN VIN (3-5V) | Power | Power in |
3V3 3V3 (out) | Power | Power out |
GND GND | Power | Power in |
SCL SCL | I²C SCL | Bidirectional (GPIO) |
SDA SDA | I²C SDA | Bidirectional (GPIO) |
INT INT | Digital active-low interrupt output | Digital output |
Verified from the Tinkered component library · Adafruit (Broadcom / Avago APDS-9960).
The APDS-9960 connects to any of the microcontrollers supported in Tinkered. Mind the 3.3 V logic level on 3.3 V boards.
This Adafruit board is 5V-friendly because of its regulator and level shifter, but the bare sensor and most cheap GY-9960 boards are 3.3V-only. Feeding 5V straight to a bare module's VCC or I2C lines destroys it.
The APDS-9960 wakes into sleep and reports nothing until you write the ENABLE register and turn on the proximity, gesture, or ALS engines individually. A silent sensor is usually an unconfigured one, not a wiring fault.
The gesture engine expects a hand to enter and fully exit the sensor's field. Very fast swipes, very slow ones, or a hand left hovering in range produce missed or garbled gestures.
INT is active-low and open-drain and only fires once you set thresholds and persistence. Forgetting to clear the interrupt flag leaves the line stuck low, and forgetting to set thresholds means it never fires at all.
Direct sunlight or a nearby IR source saturates the proximity and gesture photodiodes and corrupts readings. Shield the sensor or account for high-IR environments when placing it.
Map up, down, left, and right swipes to control media playback, page through a menu, or dim lights without touching anything.
Use the proximity reading to wake a display, trigger a relay, or turn on an LED strip when a hand approaches within a few centimeters.
Read the red, green, blue, and clear channels to identify surface color for a simple color-matching game or an object-sorting machine.
Read the ambient light channel to auto-adjust a screen or LED backlight so it brightens in daylight and dims in the dark.
Drop the APDS-9960 into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.