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)