from telemetrix_rpi_pico import telemetrix_rpi_pico from kuukar.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, mcu: telemetrix_rpi_pico.TelemetrixRpiPico) -> None: self.mcu = mcu self.mcu.set_pin_mode_sonar( SONAR_1_TRIG_PIN, SONAR_1_ECHO_PIN, self.__sonar_callback) self.mcu.set_pin_mode_sonar( SONAR_2_TRIG_PIN, SONAR_2_ECHO_PIN, self.__sonar_callback) self.mcu.set_pin_mode_sonar( SONAR_3_TRIG_PIN, SONAR_3_ECHO_PIN, self.__sonar_callback) self.mcu.set_pin_mode_dht(DHT22_PIN, self.__dht22_callback) self.mcu.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