Температуру отображает вроде нормально. Но не корректно показывает влажность. До 68% показывает как попало, а потом при повышении влажности начинает показывать в обратную сторону.
С датчиком все в порядке - проверено. Проблема в программе.
Может датчик надо подержать "в бане", как описано здесь:myx писал(а):Статья тут http://radiokot.ru/konkurs/21/
С датчиком все в порядке - проверено. Проблема в программе.
Дело не в выдерживании. Если не подождать некоторое время, то датчик незначительно брешет, что проходит через несколько часов.NickNI писал(а):Может датчик надо подержать "в бане", как описано здесь:myx писал(а):Статья тут http://radiokot.ru/konkurs/21/
С датчиком все в порядке - проверено. Проблема в программе.
http://we.easyelectronics.ru/part/datch ... sht21.html
Может этот немного исправить?11VETAL писал(а):Если есть желание могу выложить свой переделанный код, но под ЖКИ. В бане не выдерживал, но показывает правильно.
В исходнике ошибки.
Кто мешает. Сделай сам.myx писал(а):Кроме проекта с сайта we.easyelectronics.ru/part/datchik-temperatury-i-vlazhnosti-sht21.html (вариант подключения к компу) к сожалению, не видел еще нормально работающего проекта на SHT21.
Выложите исходник если не можно.11VETAL писал(а):Если есть желание могу выложить свой переделанный код, но под ЖКИ. В бане не выдерживал, но показывает правильно.
Код: Выделить всё
unsigned char ret1 = 0, ret2 = 0;
s = i2c_start(0x80); // set device address and write mode
if ( s ) {
/* failed to issue start condition, possibly no device found */
i2c_stop();
}else {
/* issuing start condition ok, device accessible */
i2c_write(0xF5); // получить влажность
i2c_stop(); // set stop conditon = release bus
s = i2c_start( 0x81 ); // set device address and read mode
_delay_ms(100);
i2c_rep_start( 0x81 ); // set device address and read mode
ret1 = i2c_readAck(); // read one byte
ret2 = i2c_readAck(); // read one byte
i2c_readNak(); // read one byte
i2c_stop();
ret = ret1;
}
return ret;