Привет! Сделал библиотеку для датчиков температуры и влажности Sensirion SHT30, SHT31 и SHT35. Скачать тут. (github). Есть примеры с объяснениями на все случаи жизни (7 штук). Это "тяжелая" версия, умеет: Выдавать температуру в Цельсиях, Кельвинах, Фаренгейтах; Выдавать относительную влажность; Выдавать абсолютную влажность в мм.рт.ст., Торрах, Паскалях, барах, psi, стандартной и технической атмосферах, и даже м водяного столба; Выдавать точности измеренных величин (для каждого типа датчиков они рассчитываются по-своему); Работать во всевозможных режимах разового измерения, которые поддерживает датчик; Включать - выключать встроенный нагреватель; Делать мягкую (через I2C) и жесткую (через соответствующий пин) перезагрузку; Вводить перекалибровку по температуре и относительной влажности; Проверять целостность данных; Выдавать код ошибки; Настраивать частоту опроса сенсора. Не умеет: Настраивать и обрабатывать прерывания от датчика Работать в режиме периодического измерения.
Плохо объяснил. Сенсоры эти умеют работать в двух режимах: 1. запрос -> измерение -> ответ 2. периодическое измерение Я реализовал только первый режим (со вторым возиться не стал, мне не надобно). Но у сенсора в этом режиме есть предельная частота опроса, выше которой он начнет греться и вносить искажения в измерения (10Гц, если правильно помню). Поэтому, библиотека отслеживает, когда был сделан предыдущий опрос сенсора и, если времени между опросами прошло недостаточно, не пошлет запрос на датчик и оставит данные старыми (с предыдущего успешного запроса). Т.е., если у вас предельная частота опроса, например, 1 раз в секунду, а пытаетесь вы обратиться к сенсору 4 раза в секунду, то будет так: 0.00 - считывание данных 0.25 - выдаст старые данные 0.50 - выдаст старые данные 0.75 - выдаст старые данные 1.00 - обновление данных 1.25 - выдаст последние данные ... 1.75 - выдаст последние данные 2.00 - обновление данных ....