ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
i2c_bus_arduino.h
Go to the documentation of this file.
1#pragma once
2
3#if defined(USE_ARDUINO) && !defined(USE_ESP32)
4
5#include <Wire.h>
7#include "i2c_bus.h"
8
9namespace esphome::i2c {
10
16
17class ArduinoI2CBus : public InternalI2CBus, public Component {
18 public:
19 void setup() override;
20 void dump_config() override;
21 ErrorCode write_readv(uint8_t address, const uint8_t *write_buffer, size_t write_count, uint8_t *read_buffer,
22 size_t read_count) override;
23 float get_setup_priority() const override { return setup_priority::BUS; }
24
25 void set_scan(bool scan) { scan_ = scan; }
26 void set_sda_pin(uint8_t sda_pin) { sda_pin_ = sda_pin; }
27 void set_scl_pin(uint8_t scl_pin) { scl_pin_ = scl_pin; }
29 void set_timeout(uint32_t timeout) { timeout_ = timeout; }
30
31 int get_port() const override { return 0; }
32
33 private:
34 void recover_();
35 void set_pins_and_clock_();
36 RecoveryCode recovery_result_;
37
38 protected:
39 TwoWire *wire_;
40 uint8_t sda_pin_;
41 uint8_t scl_pin_;
42 uint32_t frequency_;
43 uint32_t timeout_ = 0;
44 bool initialized_ = false;
45};
46
47} // namespace esphome::i2c
48
49#endif // defined(USE_ARDUINO) && !defined(USE_ESP32)
uint8_t address
Definition bl0906.h:4
uint16_le_t frequency
Definition bl0942.h:6
void set_scl_pin(uint8_t scl_pin)
float get_setup_priority() const override
void set_timeout(uint32_t timeout)
ErrorCode write_readv(uint8_t address, const uint8_t *write_buffer, size_t write_count, uint8_t *read_buffer, size_t read_count) override
void set_frequency(uint32_t frequency)
int get_port() const override
void set_sda_pin(uint8_t sda_pin)
bool scan_
Should we scan ? Can be set in the yaml.
Definition i2c_bus.h:61
ErrorCode
Error codes returned by I2CBus and I2CDevice methods.
Definition i2c_bus.h:12
constexpr float BUS
For communication buses like i2c/spi.
Definition component.h:25