Я пытаюсь разобраться в этом образце на Arduino для датчика MPU-9150. Он подключен по шине I2C и использует эту функцию для выборки с датчика,
int MPU9150_readSensor(int addrL, int addrH){
Wire.beginTransmission(MPU9150_I2C_ADDRESS);
Wire.write(addrL);
Wire.endTransmission(false);
Wire.requestFrom(MPU9150_I2C_ADDRESS, 1, true);
byte L = Wire.read();
Wire.beginTransmission(MPU9150_I2C_ADDRESS);
Wire.write(addrH);
Wire.endTransmission(false);
Wire.requestFrom(MPU9150_I2C_ADDRESS, 1, true);
byte H = Wire.read();
return (int16_t)((H<<8)+L);
}
например, addrL и addrH — это два адреса,
#define MPU9150_TEMP_OUT_H 0x41
#define MPU9150_TEMP_OUT_L 0x42
То, что я получаю через последовательный монитор, когда значения печатаются, всегда равно -1, я думаю, что это что-то делать с (int16_t)
Тип, кто удаление ничего не делает с напечатанным значением, но я не уверен? Также я не уверен, почему есть два адреса для получения одного значения, H и L, и почему они сдвинуты и сложены вместе? Это как-то связано с шиной I2C?
У меня большой недостаток знаний здесь, и я пытаюсь понять это, поэтому любая помощь будет высоко ценится.
Спасибо
Alex
Задача ещё не решена.