from telemetrix_rpi_pico import telemetrix_rpi_pico from kuukar.kuukar_config import DHT22_PIN, SONAR_1_ADC_PIN, SONAR_2_ADC_PIN, SONAR_3_ADC_PIN, LIGHT_SENSOR_PIN class sensors: __sonar_adc_pins = [SONAR_1_ADC_PIN, SONAR_2_ADC_PIN, SONAR_3_ADC_PIN] __sonar_distances = [0, 0, 0] __temperature = 0 __humidity = 0 __brightness = 0 def __init__(self, mcu: telemetrix_rpi_pico.TelemetrixRpiPico, drv: telemetrix_rpi_pico.TelemetrixRpiPico) -> None: self.mcu = mcu self.drv = drv self.drv.set_pin_mode_analog_input(SONAR_1_ADC_PIN, 100, self.__sonar_callback) self.drv.set_pin_mode_analog_input(SONAR_2_ADC_PIN, 100, self.__sonar_callback) self.drv.set_pin_mode_analog_input(SONAR_3_ADC_PIN, 100, self.__sonar_callback) self.mcu.set_pin_mode_dht(DHT22_PIN, self.__dht22_callback) self.drv.set_pin_mode_analog_input(LIGHT_SENSOR_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_adc_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 = (4096-float(data[2]))/4096*100 def __dht22_callback(self, data): humidity = data[3] temperature = data[4] self.__humidity = humidity self.__temperature = temperature