'**************************************************************** '* Name : HTU21_EXAMPLE * '* Author : Роман Сташенко, Донецк, rvstar@mail.ru * '* Notice : Copyright (c) 2017 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 20.07.2017 * '* Version : * '* Notes : * '* : * '**************************************************************** DEFINE OSC 4 DEFINE NO_CLRWDT HTU_SDA var bit ' Тут прописываем свои ноги под свою схему HTU_SCL var bit rh var word ' Переменная для считывания влажности с датчика temp_code var word ' Переменная для считывания температуры с датчика hud var word ' Переменная для обработки и хранения влажности temp var word ' Переменная для обработки и хранения температуры sign var byte ' Знак температуры = + или - (- не обрабатывается, мне был не нужен) crc var byte ' Переменная для считывания контрольной суммы с датчика ( не помню уже ' для чего поставил, но по ней можно судить о работоспособности датчика) pause 500 lcdout $fe, 1 begin: gosub htu LCDOUT $fe, $80, sign, #temp dig 2, #temp dig 1, ".", #temp dig 0, " `C " ' Выводим температуру на LCD lcdout $fe, $C0, #hud, " % " ' Влажность @ clrwdt goto begin htu: @ clrwdt i2cwrite HTU_SDA, HTU_SCL, $80, [$E5] ' Читаем влажность pause 100 I2Cread HTU_SDA, HTU_SCL, $81, [rh.highbyte, rh.lowbyte] pause 100 i2cwrite HTU_SDA, HTU_SCL, $80, [$E3] ' Читаем температуру pause 100 I2Cread HTU_SDA, HTU_SCL, $81, [temp_code.highbyte, temp_code.lowbyte, crc] @ clrwdt hud=rh/524 ' Преобразуем считанные показания влажности hud=hud-6 temp = temp_code/37 ' и температуры согласно PDF temp = temp - 474 ' для упрощения вычислений с десятичной точкой sign = "+" ' все умножаем на 10 @ clrwdt return ' По факту использования датчиков в промышленных ( 7 проектов) инкубаторах можно сделать вывод, ' что надежность HTU21 несомненно, выше, чем DHT22 и подобных. На предмет точности показаний- ' каждый п..здит по-своему, но достаточно линейно. Поэтому рекомендую сделать в устройстве ' простую коррекцию для каждого образца