7static const char *
const TAG =
"mpu6886";
35 ESP_LOGV(TAG,
" Setting up Power Management");
37 uint8_t power_management;
38 if (!this->
read_byte(MPU6886_REGISTER_POWER_MANAGEMENT_1, &power_management)) {
42 ESP_LOGV(TAG,
" Input power_management: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(power_management));
44 power_management &= 0b11111000;
50 ESP_LOGV(TAG,
" Output power_management: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(power_management));
51 if (!this->
write_byte(MPU6886_REGISTER_POWER_MANAGEMENT_1, power_management)) {
56 ESP_LOGV(TAG,
" Setting up Gyroscope Config");
59 if (!this->
read_byte(MPU6886_REGISTER_GYRO_CONFIG, &gyro_config)) {
63 ESP_LOGV(TAG,
" Input gyroscope_config: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(gyro_config));
64 gyro_config &= 0b11100111;
66 ESP_LOGV(TAG,
" Output gyro_config: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(gyro_config));
67 if (!this->
write_byte(MPU6886_REGISTER_GYRO_CONFIG, gyro_config)) {
72 ESP_LOGV(TAG,
" Setting up Accelerometer Config");
75 if (!this->
read_byte(MPU6886_REGISTER_ACCEL_CONFIG, &accel_config)) {
79 ESP_LOGV(TAG,
" Input accelerometer_config: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(accel_config));
80 accel_config &= 0b11100111;
82 ESP_LOGV(TAG,
" Output accel_config: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(accel_config));
83 if (!this->
write_byte(MPU6886_REGISTER_GYRO_CONFIG, gyro_config)) {
90 ESP_LOGCONFIG(TAG,
"MPU6886:");
93 ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
95 LOG_UPDATE_INTERVAL(
this);
106 ESP_LOGV(TAG,
" Updating");
107 uint16_t raw_data[7];
108 if (!this->
read_bytes_16(MPU6886_REGISTER_ACCEL_XOUT_H, raw_data, 7)) {
112 auto *data =
reinterpret_cast<int16_t *
>(raw_data);
125 "Got accel={x=%.3f m/s², y=%.3f m/s², z=%.3f m/s²}, "
126 "gyro={x=%.3f °/s, y=%.3f °/s, z=%.3f °/s}, temp=%.3f°C",
127 accel_x, accel_y, accel_z, gyro_x, gyro_y, gyro_z,
temperature);
virtual void mark_failed()
Mark this component as failed.
void status_set_warning(const char *message=nullptr)
void status_clear_warning()
bool write_byte(uint8_t a_register, uint8_t data, bool stop=true)
bool read_bytes_16(uint8_t a_register, uint16_t *data, uint8_t len)
bool read_byte(uint8_t a_register, uint8_t *data, bool stop=true)
float get_setup_priority() const override
sensor::Sensor * gyro_x_sensor_
sensor::Sensor * accel_y_sensor_
sensor::Sensor * accel_z_sensor_
sensor::Sensor * temperature_sensor_
sensor::Sensor * gyro_z_sensor_
sensor::Sensor * accel_x_sensor_
void dump_config() override
sensor::Sensor * gyro_y_sensor_
void publish_state(float state)
Publish a new state to the front-end.
const uint8_t MPU6886_REGISTER_WHO_AM_I
const float TEMPERATURE_OFFSET
const uint8_t MPU6886_BIT_TEMPERATURE_DISABLED
const uint8_t MPU6886_REGISTER_ACCEL_XOUT_H
const uint8_t MPU6886_REGISTER_GYRO_CONFIG
const float MPU6886_RANGE_PER_DIGIT_2G
const uint8_t MPU6886_RANGE_2G
const float MPU6886_SCALE_DPS_PER_DIGIT_2000
const float TEMPERATURE_SENSITIVITY
const uint8_t MPU6886_WHO_AM_I_IDENTIFIER
const uint8_t MPU6886_BIT_SLEEP_ENABLED
const uint8_t MPU6886_REGISTER_POWER_MANAGEMENT_1
const uint8_t MPU6886_CLOCK_SOURCE_X_GYRO
const uint8_t MPU6886_SCALE_2000_DPS
const float GRAVITY_EARTH
const uint8_t MPU6886_REGISTER_ACCEL_CONFIG
const float DATA
For components that import data from directly connected sensors like DHT.
Providing packet encoding functions for exchanging data with a remote host.