Adafruit_CircuitPython_OPT4048/examples/opt4048_oneshot.py
2025-05-27 11:19:15 -05:00

49 lines
1.6 KiB
Python

# SPDX-FileCopyrightText: Copyright (c) 2025 Tim C for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
A basic one shotdemo for using the OPT4048 tristimulus XYZ color sensor
This example reads the sensor values from all four channels (X, Y, Z, W),
demonstrates setting and getting threshold values, and displays the results.
Readints are taken in oneshot mode and then the next one is triggered when
the power down mode status is detected.
"""
import time
from time import sleep
import board
from adafruit_opt4048 import OPT4048, ConversionTime, Mode, Range
timestamp = 0
print("Adafruit OPT4048 Tristimulus XYZ Color Sensor Oneshot Test")
i2c = board.I2C() # uses board.SCL and board.SDA
# i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller
sensor = OPT4048(i2c)
print("OPT4048 sensor found!")
sensor.range = Range.AUTO
sensor.conversion_time = ConversionTime.TIME_100MS
sensor.mode = Mode.AUTO_ONESHOT
while True:
if sensor.mode == Mode.POWERDOWN:
# ok we finished the reading!
try:
CIEx, CIEy, lux = sensor.cie
except RuntimeError:
print("Error reading sensor data")
print("\nCIE Coordinates:")
print(f"CIE x:{CIEx}, y:{CIEy}, lux: {lux}", end=" ")
# Calculate and display color temperature
color_temp = sensor.calculate_color_temperature(CIEx, CIEy)
print(f"Color Temperature: {color_temp} K")
print(f"Time since last read: {time.monotonic() - timestamp} sec")
timestamp = time.monotonic()
sensor.mode = Mode.AUTO_ONESHOT