ESPHome 2026.11.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) && !defined(USE_LIBRETINY)
4
5#include <Wire.h>
7#include "i2c_bus.h"
8
9namespace esphome::i2c {
10
16
17class ArduinoI2CBus final : 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) { this->scan_ = scan; }
26 void set_sda_pin(uint8_t sda_pin) { this->sda_pin_ = sda_pin; }
27 void set_scl_pin(uint8_t scl_pin) { this->scl_pin_ = scl_pin; }
28 void set_timeout(uint32_t timeout) { this->timeout_ = timeout; }
29
30 int get_port() const override { return 0; }
32#ifdef I2C_PORT_FREQUENCY_COUNT
34 uint32_t get_frequency() const override { return this->frequency_; }
35#endif
36
37 private:
38 void recover_();
39 void set_pins_and_clock_();
40 RecoveryCode recovery_result_;
41
42 protected:
43 TwoWire *wire_;
44 uint8_t sda_pin_;
45 uint8_t scl_pin_;
48 bool initialized_ = false;
49};
50
51} // namespace esphome::i2c
52
53#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
uint32_t get_frequency() const override
void set_timeout(uint32_t timeout)
ErrorCode switch_frequency(uint32_t frequency) override
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:71
ErrorCode
Error codes returned by I2CBus and I2CDevice methods.
Definition i2c_bus.h:13
constexpr float BUS
For communication buses like i2c/spi.
Definition component.h:39
static void uint32_t