Simple test

Ensure your device works with this simple test.

examples/vcnl4200_simpletest.py
 1# SPDX-FileCopyrightText: Copyright (c) 2024 Liz Clark for Adafruit Industries
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import time
 6
 7import board
 8
 9import adafruit_vcnl4200
10
11i2c = board.I2C()
12
13sensor = adafruit_vcnl4200.Adafruit_VCNL4200(i2c)
14
15while True:
16    print(f"Proximity is: {sensor.proximity}")
17    print(f"Ambient is: {sensor.lux}")
18    time.sleep(0.1)

Full test

Try out all of the options for the VCNL4200.

examples/vcnl4200_fulltest.py
 1# SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
 2#
 3# SPDX-License-Identifier: MIT
 4"""VCNL4200 Full Test"""
 5
 6import time
 7
 8import board
 9import busio
10
11from adafruit_vcnl4200 import LED_I, PS_INT, Adafruit_VCNL4200
12
13i2c = board.I2C()
14sensor = Adafruit_VCNL4200(i2c)
15
16print(" '''ALS Settings''' ")
17print(f"Lux Persistence Mode: {sensor.als_persistence}")
18print(f"Lux Integration Mode: {sensor.als_integration_time}")
19print(f"Lux Persistence Mode: {sensor.als_persistence}")
20sensor.als_threshold_low = 0
21print(f"Lux Low Threshold: {sensor.als_low_threshold}")
22sensor.als_threshold_high = 500
23print(f"Lux High Threshold: {sensor.als_high_threshold}")
24
25print(" '''Proximity Settings''' ")
26sensor.prox_interrupt = PS_INT["BOTH"]
27print(f"Proximity Interrupt Mode: {sensor.prox_interrupt}")
28sensor.prox_interrupt_logic_mode = False
29print(f"Proximity Interrupt Logic Mode: {sensor.prox_interrupt_logic_mode}")
30sensor.prox_int_threshold_low = 0
31print(f"Proximity Threshold Low: {sensor.prox_int_threshold_low}")
32sensor.prox_int_threshold_high = 500
33print(f"Proximity Threshold High: {sensor.prox_int_threshold_high}")
34sensor.prox_active_force = False
35print(f"Proximity Active Force: {sensor.prox_active_force}")
36sensor.prox_smart_persistence = False
37print(f"Proximity Smart Persistence: {sensor.prox_smart_persistence}")
38sensor.prox_led_current = LED_I["50MA"]
39print(f"Proximity IR LED Current: {sensor.prox_led_current}")
40sensor.prox_cancellation_level = 0
41print(f"Proximity Cancellation Level: {sensor.prox_cancellation_level}")
42print(f"Proximity Integration Mode: {sensor.prox_integration_time}")
43print(f"Proximity Persistence Mode: {sensor.prox_persistence}")
44print(f"Proximity Duty Cycle: {sensor.prox_duty}")
45
46print(" '''Proximity Sunlight Settings''' ")
47print(f"Sun Protect Polarity: {sensor.sun_protect_polarity}")
48sensor.prox_boost_typical_sunlight_capability = False
49print(
50    f"Proximity Boost Typical Sunlight Capability: {sensor.prox_boost_typical_sunlight_capability}"
51)
52sensor.prox_sun_cancellation = False
53print(f"Proximity Sun Cancellation: {sensor.prox_sun_cancellation}")
54sensor.prox_sunlight_double_immunity = False
55print(f"Proximity Sunlight Double Immunity: {sensor.prox_sunlight_double_immunity}")
56
57print(f"Interrupt Flags: {sensor.interrupt_flags}")
58print(f"Proximity is: {sensor.proximity}")
59print(f"Ambient is: {sensor.lux}")
60
61while True:
62    pass

Interrupts test

Test out high and low threshold interrupts for the proximity and lux sensors.

examples/vcnl4200_interrupts.py
 1# SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
 2#
 3# SPDX-License-Identifier: MIT
 4"""Test interrupts for VCNL4200"""
 5
 6import time
 7
 8import board
 9import digitalio
10
11from adafruit_vcnl4200 import ALS_PERS, PS_INT, PS_PERS, Adafruit_VCNL4200
12
13i2c = board.I2C()
14sensor = Adafruit_VCNL4200(i2c)
15
16interrupt_pin = digitalio.DigitalInOut(board.D5)
17interrupt_pin.direction = digitalio.Direction.INPUT
18interrupt_pin.pull = digitalio.Pull.UP
19
20sensor.als_threshold_low = 500
21sensor.als_threshold_high = 1000
22sensor.prox_int_threshold_low = 200
23sensor.prox_int_threshold_high = 600
24
25sensor.als_interrupt(enabled=True, white_channel=False)
26sensor.prox_interrupt = PS_INT["BOTH"]
27sensor.prox_interrupt_logic_mode = False
28sensor.als_persistence = ALS_PERS["1"]
29sensor.prox_persistence = PS_PERS["1"]
30
31print("Monitoring interrupts...")
32
33while True:
34    if not interrupt_pin.value:  # Active low
35        print("Interrupt triggered!")
36        interrupt_flags = sensor.interrupt_flags
37        print("Interrupt flags:", interrupt_flags)
38
39        print("Proximity:", sensor.proximity)
40        print("Ambient Light:", sensor.lux)
41        if interrupt_flags["PROX_AWAY"]:
42            print("Proximity: Object moved away")
43        if interrupt_flags["PROX_CLOSE"]:
44            print("Proximity: Object close")
45        if interrupt_flags["ALS_HIGH"]:
46            print("ALS: Light level too high")
47        if interrupt_flags["ALS_LOW"]:
48            print("ALS: Light level too low")
49        time.sleep(0.5)
50    else:
51        print(f"Ambient: {sensor.lux}, Proximity: {sensor.proximity}")
52
53    time.sleep(0.1)