/Adafruit_CircuitPython_APDS9960

Adafruit Bundle driver for APSD9960 Gesture breakout board

Primary LanguagePython

Introduction

image

The APDS9960 is a specialize chip that detects hand gestures, proximity detection and ambient light color over I2C. Its available on Adafruit as a breakout.

Dependencies

This driver depends on:

Please ensure all dependencies are available on the CircuitPython filesystem. This is easily achieved by downloading the Adafruit library and driver bundle.

Usage Example

Hardware Set-up

Connect Vin to 3.3 V or 5 V power source, GND to ground, SCL and SDA to the appropriate pins.

Basics

Of course, you must import i2c bus device, board pins, and the library:

from board import SCL, SDA, A1
from adafruit_apds9960.apds9960 import APDS9960
import busio
import digitalio

To set-up the device to gather data, initialize the I2CDevice using SCL and SDA pins. Then initialize the library. Optionally provide an interrupt pin for proximity detection.

int_pin = digitalio.DigitalInOut(A1)
i2c = busio.I2C(SCL, SDA)
apds = APDS9960(i2c, interrupt_pin=int_pin)

Gestures

To get a gesture, see if a gesture is available first, then get the gesture Code

gesture = apds.gesture()
if gesture == 1:
  print("up")
if gesture == 2:
  print("down")
if gesture == 3:
  print("left")
if gesture == 4:
  print("right")

Color Measurement

To get a color measure, enable color measures, wait for color data, then get the color data.

apds.enable_color = True

while not apds.color_data_ready:
    time.sleep(0.005)

r, g, b, c = apds.color_data
print("r: {}, g: {}, b: {}, c: {}".format(r, g, b, c))

Proximity Detection

To check for a object in proximity, see if a gesture is available first, then get the gesture Code

apds.enable_proximity = True

# set the interrupt threshold to fire when proximity reading goes above 175
apds.proximity_interrupt_threshold = (0, 175)

# enable the proximity interrupt
apds.enable_proximity_interrupt = True

while True:
  if not interrupt_pin.value:
    print(apds.proximity())

    # clear the interrupt
    apds.clear_interrupt()

API Reference

api

Contributing

Contributions are welcome! Please read our Code of Conduct before contributing to help this project stay welcoming.

Building locally

To build this library locally you'll need to install the circuitpython-travis-build-tools package.

python3 -m venv .env
source .env/bin/activate
pip install -r requirements.txt

Once installed, make sure you are in the virtual environment:

source .env/bin/activate

Then run the build:

circuitpython-build-bundles --filename_prefix adafruit-circuitpython-apds --library_location .