No description
Find a file
2020-08-23 11:01:51 -05:00
.github/workflows build.yml: add black formatting check 2020-04-07 16:10:46 -05:00
adafruit_apds9960 remove bad-whitespace pylint directive 2020-08-23 11:01:51 -05:00
docs Black reformatting with Python 3 target. 2020-04-08 13:01:05 -04:00
examples Ran black, updated to pylint 2.x 2020-03-20 20:59:18 -04:00
.gitignore Moved repository from Travis to GitHub Actions 2019-12-27 22:23:26 -05:00
.pylintrc update pylintrc for black 2020-03-17 20:09:22 -05:00
.readthedocs.yml updated .travis & .readthedocs yml 2018-02-22 23:17:18 -06:00
CODE_OF_CONDUCT.md update code of conduct 2020-03-15 23:32:01 -05:00
LICENSE added LICENSE 2018-03-16 19:09:09 -05:00
README.rst change proximity to a property 2020-03-10 10:56:18 -07:00
requirements.txt add setup.py, add pypi to .travis.yml, misc. tweaks for pypi, .gitignore 2018-07-03 14:11:01 -06:00
setup.py Ran black, updated to pylint 2.x 2020-03-20 20:59:18 -04:00

Introduction
============

.. image:: https://readthedocs.org/projects/adafruit-circuitpython-apds9960/badge/?version=latest
    :target: https://circuitpython.readthedocs.io/projects/apds9960/en/latest/
    :alt: Documentation Status

.. image :: https://img.shields.io/discord/327254708534116352.svg
    :target: https://discord.gg/nBQh6qu
    :alt: Discord

.. image:: https://github.com/adafruit/Adafruit_CircuitPython_APDS9960/workflows/Build%20CI/badge.svg
    :target: https://github.com/adafruit/Adafruit_CircuitPython_APDS9960/actions/
    :alt: Build Status

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 <https://www.adafruit.com/product/3595>`_.


Installation and Dependencies
=============================
This driver depends on:

* `Adafruit CircuitPython <https://github.com/adafruit/circuitpython>`_

Please ensure all dependencies are available on the CircuitPython filesystem.
This is easily achieved by downloading
`the Adafruit library and driver bundle <https://github.com/adafruit/Adafruit_CircuitPython_Bundle>`_.

Installing from PyPI
--------------------

On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from PyPI <https://pypi.org/project/adafruit-circuitpython-apds9960/>`_. To install for current user:

.. code-block:: shell

    pip3 install adafruit-circuitpython-apds9960

To install system-wide (this may be required in some cases):

.. code-block:: shell

    sudo pip3 install adafruit-circuitpython-apds9960

To install in a virtual environment in your current project:

.. code-block:: shell

    mkdir project-name && cd project-name
    python3 -m venv .env
    source .env/bin/activate
    pip3 install adafruit-circuitpython-apds9960

Usage Example
=============

.. code-block:: python

    import board
    import busio
    import digitalio
    from adafruit_apds9960.apds9960 import APDS9960

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

    apds.enable_proximity = True
    apds.proximity_interrupt_threshold = (0, 175)
    apds.enable_proximity_interrupt = True

    while True:
            print(apds.proximity)
            apds.clear_interrupt()

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:

.. code:: python


  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.

.. code:: python

  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

.. code:: python

  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.

.. code:: python

  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

.. code:: python

  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()


Contributing
============

Contributions are welcome! Please read our `Code of Conduct
<https://github.com/adafruit/Adafruit_CircuitPython_APDS9960/blob/master/CODE_OF_CONDUCT.md>`_
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 <https://github.com/adafruit/circuitpython-build-tools>`_ package.

.. code-block::shell

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

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

.. code-block::shell

    source .env/bin/activate

Then run the build:

.. code-block::shell

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

Sphinx documentation
-----------------------

Sphinx is used to build the documentation based on rST files and comments in the code. First,
install dependencies (feel free to reuse the virtual environment from above):

.. code-block:: shell

    python3 -m venv .env
    source .env/bin/activate
    pip install Sphinx sphinx-rtd-theme

Now, once you have the virtual environment activated:

.. code-block:: shell

    cd docs
    sphinx-build -E -W -b html . _build/html

This will output the documentation to ``docs/_build/html``. Open the index.html in your browser to
view them. It will also (due to -W) error out on any warning like Travis will. This is a good way to
locally verify it will pass.