# Библиотека для работы со временем и задержками import time # Библиотека для работы с платой Troyka HAT import troykahat # Создаём объект для работы с расширителем портов ap = troykahat.analog_io() # Назначаем пины для коммуникации с датчиком пыли PIN_AP_AOUT = 0 PIN_AP_IR_LED = 1 # Нулевой порог напряжения zero_sensor_dust_density = 0.6 # Пин IR-LED в режим выхода ap.pinMode(PIN_AP_IR_LED, ap.OUTPUT) # Пин AOUT в режим входа ap.pinMode(PIN_AP_AOUT, ap.INPUT) while True: # Считываем значение с датчика # Для точности показаний считываем 10 выборок total_sensor_ADC = 0 for i in range(10): ap.digitalWrite(PIN_AP_IR_LED, True) time.sleep(0.00028) # Считываем значение с датчика total_sensor_ADC = total_sensor_ADC + ap.analogRead(PIN_AP_AOUT) time.sleep(0.00004) ap.digitalWrite(PIN_AP_IR_LED, False) sensor_ADC = total_sensor_ADC / 10 # Переводим «сырые» значения с АЦП в напряжение sensor_voltage = sensor_ADC * 3.3 * 11 # Переводим напряжение в концентрацию пыли # Также учитываем нулевой порог напряжение if sensor_voltage < zero_sensor_dust_density: sensor_dust_density = 0 else: sensor_dust_density = 0.17 * sensor_voltage - 0.1 # Выводим показания датчика print("Voltage: ", round(sensor_voltage, 2), '\t', "Dust: ", round(sensor_dust_density, 2)) # Ждём 10 мс time.sleep(0.1)