Отпаял старый датчик от батареи сделал макетную плату вроде даже код написал на что умишка хватило Ожидал что то типо такого получить в монитор порта c-0001 1001 0000 но получаю c-23. Библиотека Wire.h превращает данные в градусы или 23 это 16-ти ричный код ? при нагреве показания растут но датчик жутко тупой. Как в коде отобразить дробные числа показания градусов (23.6 например ) Код (C++): #include <Wire.h> int temp_address = 79;// начинаем обмен с устройством с I2C адресом "44" (0x2C) void setup() { Serial.begin(9600); Wire.begin(); } void loop() { Wire.beginTransmission(temp_address); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(temp_address,12 ); while(Wire.available() ==0); int c = Wire.read(); Serial.print("c-"); Serial.print(c); delay(500); }
откуда 16-ричный код. если вы читаете с датчика 1 байт всего? Я абсолютно не знаю, что этот датчик должен выдать - но шансов получить с таким кодом верный ответ у вас немного
Функция Wire.read() читает один байт. Результат функции Wire.requestFrom() - кол-во полученных байт. Так что можете проверить сколько байтов, из запрошенных 12-ти, возвращает устройство.