223 lines
6.5 KiB
Python
223 lines
6.5 KiB
Python
|
"""
|
||
|
This type stub file was generated by pyright.
|
||
|
"""
|
||
|
|
||
|
"""
|
||
|
Python library for the TCS3472x and TCS340x Color Sensors
|
||
|
Documentation (including datasheet): https://ams.com/tcs34725#tab/documents
|
||
|
https://ams.com/tcs3400#tab/documents
|
||
|
The sense hat for AstroPi on the ISS uses the TCS34725.
|
||
|
The sense hat v2 uses the TCS3400 the successor of the TCS34725.
|
||
|
The TCS34725 is not available any more. It was discontinued by ams in 2021.
|
||
|
"""
|
||
|
|
||
|
class HardwareInterface:
|
||
|
"""
|
||
|
`HardwareInterface` is the abstract class that sits between the
|
||
|
`ColourSensor` class (providing the TCS34725/TCS3400 sensor API)
|
||
|
and the actual hardware. Using this intermediate layer of abstraction,
|
||
|
a `ColourSensor` object interacts with the hardware without being
|
||
|
aware of how this interaction is implemented.
|
||
|
Different subclasses of the `HardwareInterface` class can provide
|
||
|
access to the hardware through e.g. I2C, `libiio` and its system
|
||
|
files or even a hardware emulator.
|
||
|
"""
|
||
|
|
||
|
@staticmethod
|
||
|
def max_value(integration_cycles): # -> Literal[65535]:
|
||
|
"""
|
||
|
The maximum raw value for the RBGC channels depends on the number
|
||
|
of integration cycles.
|
||
|
"""
|
||
|
...
|
||
|
def get_enabled(self):
|
||
|
"""
|
||
|
Return True if the sensor is enabled and False otherwise
|
||
|
"""
|
||
|
...
|
||
|
def set_enabled(self, status):
|
||
|
"""
|
||
|
Enable or disable the sensor, depending on the boolean `status` flag
|
||
|
"""
|
||
|
...
|
||
|
def get_gain(self):
|
||
|
"""
|
||
|
Return the current value of the sensor gain.
|
||
|
See GAIN_VALUES for the set of possible values.
|
||
|
"""
|
||
|
...
|
||
|
def set_gain(self, gain):
|
||
|
"""
|
||
|
Set the value for the sensor `gain`.
|
||
|
See GAIN_VALUES for the set of possible values.
|
||
|
"""
|
||
|
...
|
||
|
def get_integration_cycles(self):
|
||
|
"""
|
||
|
Return the current number of integration_cycles (1-256).
|
||
|
It takes `integration_cycles` * CLOCK_STEP to obtain a new
|
||
|
sensor reading.
|
||
|
"""
|
||
|
...
|
||
|
def set_integration_cycles(self, integration_cycles):
|
||
|
"""
|
||
|
Set the current number of integration_cycles (1-256).
|
||
|
It takes `integration_cycles` * CLOCK_STEP to obtain a new
|
||
|
sensor reading.
|
||
|
"""
|
||
|
...
|
||
|
def get_raw(self):
|
||
|
"""
|
||
|
Return a tuple containing the raw values of the RGBC channels.
|
||
|
The maximum for these raw values depends on the number of
|
||
|
integration cycles and can be computed using `max_value`.
|
||
|
"""
|
||
|
...
|
||
|
def get_red(self):
|
||
|
"""
|
||
|
Return the raw value of the R (red) channel.
|
||
|
The maximum for this raw value depends on the number of
|
||
|
integration cycles and can be computed using `max_value`.
|
||
|
"""
|
||
|
...
|
||
|
def get_green(self):
|
||
|
"""
|
||
|
Return the raw value of the G (green) channel.
|
||
|
The maximum for this raw value depends on the number of
|
||
|
integration cycles and can be computed using `max_value`.
|
||
|
"""
|
||
|
...
|
||
|
def get_blue(self):
|
||
|
"""
|
||
|
Return the raw value of the B (blue) channel.
|
||
|
The maximum for this raw value depends on the number of
|
||
|
integration cycles and can be computed using `max_value`.
|
||
|
"""
|
||
|
...
|
||
|
def get_clear(self):
|
||
|
"""
|
||
|
Return the raw value of the C (clear light) channel.
|
||
|
The maximum for this raw value depends on the number of
|
||
|
integration cycles and can be computed using `max_value`.
|
||
|
"""
|
||
|
...
|
||
|
|
||
|
class I2C(HardwareInterface):
|
||
|
"""
|
||
|
An implementation of the `HardwareInterface` for the TCS34725/TCS3400
|
||
|
sensor that uses I2C to control the sensor and retrieve measurements.
|
||
|
Use the datasheets as a reference.
|
||
|
"""
|
||
|
|
||
|
BUS = ...
|
||
|
ENABLE = ...
|
||
|
ATIME = ...
|
||
|
CONTROL = ...
|
||
|
ID = ...
|
||
|
STATUS = ...
|
||
|
CDATA = ...
|
||
|
RDATA = ...
|
||
|
GDATA = ...
|
||
|
BDATA = ...
|
||
|
OFF = ...
|
||
|
PON = ...
|
||
|
AEN = ...
|
||
|
ON = ...
|
||
|
AVALID = ...
|
||
|
GAIN_REG_VALUES = ...
|
||
|
ADDR = ...
|
||
|
GAIN_VALUES = ...
|
||
|
CLOCK_STEP = ...
|
||
|
GAIN_TO_REG = ...
|
||
|
REG_TO_GAIN = ...
|
||
|
def __init__(self) -> None: ...
|
||
|
@staticmethod
|
||
|
def i2c_enabled(): # -> bool:
|
||
|
"""Returns True if I2C is enabled or False otherwise."""
|
||
|
...
|
||
|
def get_enabled(self):
|
||
|
"""
|
||
|
Return True if the sensor is enabled and False otherwise
|
||
|
"""
|
||
|
...
|
||
|
def set_enabled(self, status): # -> None:
|
||
|
"""
|
||
|
Enable or disable the sensor, depending on the boolean `status` flag
|
||
|
"""
|
||
|
...
|
||
|
def get_gain(self): # -> Literal[1, 4, 16, 60, 64]:
|
||
|
"""
|
||
|
Return the current value of the sensor gain.
|
||
|
See GAIN_VALUES for the set of possible values.
|
||
|
"""
|
||
|
...
|
||
|
def set_gain(self, gain): # -> None:
|
||
|
"""
|
||
|
Set the value for the sensor `gain`.
|
||
|
See GAIN_VALUES for the set of possible values.
|
||
|
"""
|
||
|
...
|
||
|
def get_integration_cycles(self):
|
||
|
"""
|
||
|
Return the current number of integration_cycles (1-256).
|
||
|
It takes `integration_cycles` * CLOCK_STEP to obtain a new
|
||
|
sensor reading.
|
||
|
"""
|
||
|
...
|
||
|
def set_integration_cycles(self, integration_cycles): # -> None:
|
||
|
"""
|
||
|
Set the current number of integration_cycles (1-256).
|
||
|
It takes `integration_cycles` * CLOCK_STEP to obtain a new
|
||
|
sensor reading.
|
||
|
"""
|
||
|
...
|
||
|
def get_raw(self): # -> tuple[Any, Any, Any, Any]:
|
||
|
"""
|
||
|
Return a tuple containing the raw values of the RGBC channels.
|
||
|
The maximum for these raw values depends on the number of
|
||
|
integration cycles and can be computed using `max_value`.
|
||
|
"""
|
||
|
...
|
||
|
get_red = ...
|
||
|
get_green = ...
|
||
|
get_blue = ...
|
||
|
get_clear = ...
|
||
|
|
||
|
class ColourSensor:
|
||
|
def __init__(self, gain=..., integration_cycles=..., interface=...) -> None: ...
|
||
|
@property
|
||
|
def enabled(self): ...
|
||
|
@enabled.setter
|
||
|
def enabled(self, status): ...
|
||
|
@property
|
||
|
def gain(self): ...
|
||
|
@gain.setter
|
||
|
def gain(self, gain): ...
|
||
|
@property
|
||
|
def integration_cycles(self): ...
|
||
|
@integration_cycles.setter
|
||
|
def integration_cycles(self, integration_cycles): ...
|
||
|
@property
|
||
|
def integration_time(self): ...
|
||
|
@property
|
||
|
def max_raw(self): ...
|
||
|
@property
|
||
|
def colour_raw(self): ...
|
||
|
|
||
|
color_raw = ...
|
||
|
red_raw = ...
|
||
|
green_raw = ...
|
||
|
blue_raw = ...
|
||
|
clear_raw = ...
|
||
|
brightness = ...
|
||
|
@property
|
||
|
def colour(self): ...
|
||
|
@property
|
||
|
def rgb(self): ...
|
||
|
|
||
|
color = ...
|
||
|
red = ...
|
||
|
green = ...
|
||
|
blue = ...
|
||
|
clear = ...
|