Методами библиотеки Wire стандартного пакета IDE пытаюсь считать показания дистанционного датчика по I2c шине. Запрашиваю температуру объекта в соответствии с даташит из 0х07 регистра, ровно так как это успешно читалось с Мемс гироскопа на основе MPU6050. Примерно так.
Цитата:
#include <Wire.h>
float Tem;
void setup() {
Serial.begin(9600);
Wire.begin(); // Инициализировать ардуино как мастер
}
void loop() {
Wire.beginTransmission(0x5A); // Начать связь с MLX
Wire.write(00000111); // ставим в очередь 007 регистр (T0)
Wire.endTransmission(); //закончить передачу
Wire.requestFrom(0x5A, 2);//запрашиваем Т0 так как этот регистр MLX поставлен в очередь на передачу
Tem=(Wire.read()<< 8 | Wire.read());//получаем значение в переменную
Tem=(Tem/50)-272;//и вычисляем ее значение в градусах цельсия
delay(300);
Serial.println(Tem);
}
Но в этом случае результата нет. На мониторе стабильно -272 К. В даташите есть информация, что он не поддерживает некоторых способов доступа по шине. Подозреваю, что это как раз тот случай. В интернете рекомендуется библиотека Adafruit для ратоты с этим датчиком. При ее использовании, что то вроде снимается, но она несколько урезана. Нужен второй датчик на шине, адрес которого надо изменить, чего Adafruit явно не предусматривает. Как правильно нужно прочесть регистры этого датчика?
Датчик в версии GY-906