Добавил еще один сниппет -
работа с BMP180 (датчик температуры и давления).
Опять в даташите формула для вычисления "компенсированных" значений больше похожа на заклинание для вызывания бесов. Температуру показывает более-менее правдоподобно (грубое измерение по некалиброванному платиновому дало 24.7±1℃; BMP180 выдает 24.1℃). При нагреве рукой температура меняется, т.е. все вроде бы работает. Кроме давления. Барометр показывает невозможные 692мм.рт.ст.! Причем, как бы я ни менял оверсемплинг (он работает: судя по отладке, без оверсемплинга измерения очень быстро проходят, а при максимальном - в несколько раз дольше), давление все время сидит примерно на одном и том же уровне ±10Па.
Похоже, заводская калибровка оставляет желать лучшего…
Кстати, да: в даташите пишут, что нужно выжидать паузы после того, как дал команду измерять. В интернетах тоже народ не заморачивается и пишет паузы. А вот, пока я искал причину, почему у меня барометр брешет, наткнулся на то, что один другому советовал проверять регистр CTRL_MEAS на флаг SCO (start conversion). Проверил: и действительно, можно делать нормальный человеческий поллинг, а не сравнивать значение текущего времени с временем начала измерения. Если сунуть датчик в емкость с изменяемым давлением (ротовую полость ☺), показания барометра меняются. Т.е. он явно работает, но откалиброван неправильно.