ESPHome 2026.2.3
Loading...
Searching...
No Matches
sensor_mlx90393.h
Go to the documentation of this file.
1#pragma once
2
3#include <MLX90393.h>
4#include <MLX90393Hal.h>
8#include "esphome/core/hal.h"
9
10namespace esphome {
11namespace mlx90393 {
12
23
24class MLX90393Cls : public PollingComponent, public i2c::I2CDevice, public MLX90393Hal {
25 public:
26 void setup() override;
27 void dump_config() override;
28 void update() override;
29
30 void set_drdy_gpio(GPIOPin *pin) { drdy_pin_ = pin; }
31
32 void set_x_sensor(sensor::Sensor *x_sensor) { x_sensor_ = x_sensor; }
33 void set_y_sensor(sensor::Sensor *y_sensor) { y_sensor_ = y_sensor; }
34 void set_z_sensor(sensor::Sensor *z_sensor) { z_sensor_ = z_sensor; }
35 void set_t_sensor(sensor::Sensor *t_sensor) { t_sensor_ = t_sensor; }
36
37 void set_oversampling(uint8_t osr) { oversampling_ = osr; }
38 void set_t_oversampling(uint8_t osr2) { temperature_oversampling_ = osr2; }
39 void set_resolution(uint8_t xyz, uint8_t res) { resolutions_[xyz] = res; }
40 void set_filter(uint8_t filter) { filter_ = filter; }
41 void set_gain(uint8_t gain_sel) { gain_ = gain_sel; }
42 void set_temperature_compensation(bool temperature_compensation) {
43 temperature_compensation_ = temperature_compensation;
44 }
45 void set_hallconf(uint8_t hallconf) { hallconf_ = hallconf; }
46 // overrides for MLX library
47
48 // disable lint because it keeps suggesting const uint8_t *response.
49 // this->read() writes data into response, so it can't be const
50 bool transceive(const uint8_t *request, size_t request_size, uint8_t *response,
51 size_t response_size) override; // NOLINT
52 bool has_drdy_pin() override;
53 bool read_drdy_pin() override;
54 void sleep_millis(uint32_t millis) override;
55 void sleep_micros(uint32_t micros) override;
56
57 protected:
58 MLX90393 mlx_;
63 uint8_t gain_;
66 uint8_t filter_;
67 uint8_t resolutions_[3]{0};
69 uint8_t hallconf_{0xC};
70 GPIOPin *drdy_pin_{nullptr};
71
73 uint8_t apply_setting_(MLX90393Setting which);
74
77};
78
79} // namespace mlx90393
80} // namespace esphome
This class simplifies creating components that periodically check a state.
Definition component.h:512
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:133
void sleep_micros(uint32_t micros) override
void set_gain(uint8_t gain_sel)
void sleep_millis(uint32_t millis) override
void set_filter(uint8_t filter)
void set_temperature_compensation(bool temperature_compensation)
void set_t_oversampling(uint8_t osr2)
void verify_settings_timeout_(MLX90393Setting stage)
Regularly checks that our settings are still applied.
void set_z_sensor(sensor::Sensor *z_sensor)
bool verify_setting_(MLX90393Setting which)
void set_x_sensor(sensor::Sensor *x_sensor)
void set_hallconf(uint8_t hallconf)
bool transceive(const uint8_t *request, size_t request_size, uint8_t *response, size_t response_size) override
void set_t_sensor(sensor::Sensor *t_sensor)
void set_y_sensor(sensor::Sensor *y_sensor)
uint8_t apply_setting_(MLX90393Setting which)
void set_resolution(uint8_t xyz, uint8_t res)
Base-class for all sensors.
Definition sensor.h:43
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint32_t IRAM_ATTR HOT micros()
Definition core.cpp:27
uint32_t IRAM_ATTR HOT millis()
Definition core.cpp:25