kuukar-rpi/kuukar_sensors.py

55 lines
1.9 KiB
Python

from telemetrix_rpi_pico import telemetrix_rpi_pico
from kuukar_config import DHT22_PIN, SONAR_1_ECHO_PIN, SONAR_1_TRIG_PIN,\
SONAR_2_ECHO_PIN, SONAR_2_TRIG_PIN, SONAR_3_ECHO_PIN, SONAR_3_TRIG_PIN,\
LIGHT_ANALOG_PIN
class sensors:
__sonar_trig_pins = [SONAR_1_TRIG_PIN,
SONAR_2_TRIG_PIN, SONAR_3_TRIG_PIN]
__sonar_distances = [0, 0, 0]
__temperature = 0
__humidity = 0
__brightness = 0
def __init__(self, aux_board: telemetrix_rpi_pico.TelemetrixRpiPico, driver_board: telemetrix_rpi_pico.TelemetrixRpiPico) -> None:
self.aux = aux_board
self.driver = driver_board
self.driver.set_pin_mode_sonar(
SONAR_1_TRIG_PIN, SONAR_1_ECHO_PIN, self.__sonar_callback)
self.driver.set_pin_mode_sonar(
SONAR_2_TRIG_PIN, SONAR_2_ECHO_PIN, self.__sonar_callback)
self.driver.set_pin_mode_sonar(
SONAR_3_TRIG_PIN, SONAR_3_ECHO_PIN, self.__sonar_callback)
self.driver.set_pin_mode_dht(DHT22_PIN, self.__dht22_callback)
self.aux.set_pin_mode_analog_input(LIGHT_ANALOG_PIN, 0, self.__light_sensor_callback())
def sonar_get_distance(self, id: int) -> float:
return self.__sonar_distances[id]
def __sonar_callback(self, data):
pin = data[1]
distance = data[2]
sonar_id = self.__sonar_trig_pins.index(pin)
self.__sonar_distances[sonar_id] = distance
def get_brightness_pct(self) -> float:
return self.__brightness
def get_temperature(self) -> float:
return self.__temperature
def get_humidity_pct(self) -> float:
return self.__humidity
def __light_sensor_callback(self, data):
self.__brightness = data[2]
def __dht22_callback(self, data):
humidity = data[3]
temperature = data[4]
self.__humidity = humidity
self.__temperature = temperature