kuukar-rpi/kuukar/kuukar_sensors.py

48 lines
1.7 KiB
Python
Raw Permalink Normal View History

from telemetrix_rpi_pico import telemetrix_rpi_pico
2022-12-08 13:55:33 +00:00
from kuukar.kuukar_config import DHT22_PIN, SONAR_1_ADC_PIN, SONAR_2_ADC_PIN, SONAR_3_ADC_PIN, LIGHT_SENSOR_PIN
2022-10-25 14:53:05 +00:00
2022-10-23 06:49:59 +00:00
class sensors:
__sonar_adc_pins = [SONAR_1_ADC_PIN,
SONAR_2_ADC_PIN, SONAR_3_ADC_PIN]
2022-10-28 07:14:00 +00:00
__sonar_distances = [0, 0, 0]
__temperature = 0
__humidity = 0
__brightness = 0
2022-10-25 14:53:05 +00:00
2022-12-08 13:07:29 +00:00
def __init__(self, mcu: telemetrix_rpi_pico.TelemetrixRpiPico, drv: telemetrix_rpi_pico.TelemetrixRpiPico) -> None:
2022-11-04 04:58:20 +00:00
self.mcu = mcu
2022-12-08 13:07:29 +00:00
self.drv = drv
2022-12-08 13:55:33 +00:00
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)
2022-11-04 04:58:20 +00:00
self.mcu.set_pin_mode_dht(DHT22_PIN, self.__dht22_callback)
2022-12-08 13:57:38 +00:00
self.drv.set_pin_mode_analog_input(LIGHT_SENSOR_PIN, 0, self.__light_sensor_callback)
2022-10-25 14:53:05 +00:00
def sonar_get_distance(self, id: int) -> float:
2022-10-28 07:14:00 +00:00
return self.__sonar_distances[id]
2022-10-25 14:53:05 +00:00
2022-10-28 07:14:00 +00:00
def __sonar_callback(self, data):
2022-10-25 14:53:05 +00:00
pin = data[1]
distance = data[2]
sonar_id = self.__sonar_adc_pins.index(pin)
2022-12-08 13:58:53 +00:00
self.__sonar_distances[sonar_id] = distance
2022-10-28 07:14:00 +00:00
def get_brightness_pct(self) -> float:
return self.__brightness
2022-10-25 14:53:05 +00:00
def get_temperature(self) -> float:
2022-10-28 07:14:00 +00:00
return self.__temperature
2022-10-25 14:53:05 +00:00
def get_humidity_pct(self) -> float:
2022-10-28 07:14:00 +00:00
return self.__humidity
def __light_sensor_callback(self, data):
2022-11-10 15:32:59 +00:00
self.__brightness = (4096-float(data[2]))/4096*100
2022-10-25 14:53:05 +00:00
2022-10-28 07:14:00 +00:00
def __dht22_callback(self, data):
2022-10-25 14:53:05 +00:00
humidity = data[3]
temperature = data[4]
2022-10-28 07:14:00 +00:00
self.__humidity = humidity
self.__temperature = temperature