Здравствуйте, есть нужда подключить ina219 и Lan8720 к esp32. Проблема в том, что они подключаются по шине i2c и отказываются работать вместе.
lan8720 постоянно пишет коннект..... дисконнект.....
Нашел статью, где подключают 2 устройства i2c на разные шины.
Код из примера:
источник: http://digitrode.ru/computing-devices/mcu_cpu/2297-esp32-i-interfeys-i2c.html
пытаюсь сделать аналогично, но получаю ошибку:
no matching function for call to 'Adafruit_INA219::begin(int, TwoWire&)'
в идеале бы заставить ina219 работать по другой шине с библиотекой GyverINA, а то в Adafruit_INA219 мало функционала.
Помогите пожалуйста, идеи совсем закончились
lan8720 постоянно пишет коннект..... дисконнект.....
Нашел статью, где подключают 2 устройства i2c на разные шины.
Код из примера:
C++:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SDA_2 33
#define SCL_2 32
Adafruit_BME280 bme1;
Adafruit_BME280 bme2;
void setup() {
Serial.begin(115200);
Serial.println(F("BME280 test"));
Wire.begin();
Wire1.begin(SDA_2, SCL_2);
bool status1 = bme1.begin(0x76);
if (!status1) {
Serial.println("Could not find a valid BME280_1 sensor, check wiring!");
while (1);
}
bool status2 = bme2.begin(0x76, &Wire1);
if (!status2) {
Serial.println("Could not find a valid BME280_2 sensor, check wiring!");
while (1);
}
Serial.println();
}
void loop() {
Serial.print("Temperature from BME1= ");
Serial.print(bme1.readTemperature());
Serial.println(" *C");
Serial.print("Humidity from BME1 = ");
Serial.print(bme1.readHumidity());
Serial.println(" %");
Serial.print("Pressure from BME1 = ");
Serial.print(bme1.readPressure() / 100.0F);
Serial.println(" hPa");
Serial.println("--------------------");
Serial.print("Temperature from BME2 = ");
Serial.print(bme2.readTemperature());
Serial.println(" *C");
Serial.print("Humidity from BME2 = ");
Serial.print(bme2.readHumidity());
Serial.println(" %");
Serial.print("Pressure from BME2 = ");
Serial.print(bme2.readPressure() / 100.0F);
Serial.println(" hPa");
Serial.println("--------------------");
delay(5000);
}
пытаюсь сделать аналогично, но получаю ошибку:
no matching function for call to 'Adafruit_INA219::begin(int, TwoWire&)'
C++:
#include <Wire.h>
#include <Adafruit_INA219.h>
#define SDA_2 33
#define SCL_2 32
Adafruit_INA219 ina219;
uint32_t myTimer1 = 0;
void setup() {
Serial.begin(115200);
uint32_t currentFrequency;
Wire1.begin(SDA_2, SCL_2);
ina219.begin(0x44, Wire1);
}
void loop() {
if (millis() - myTimer1 >= 5000) {
float shuntvoltage = 0; // Создаем переменную shuntvoltage
float busvoltage = 0; // Создаем переменную busvoltage
float current_mA = 0; // Создаем переменную current_mA
float loadvoltage = 0; // Создаем переменную loadvoltage
float power_mW = 0; // Создаем переменную power_mW
shuntvoltage = ina219.getShuntVoltage_mV(); // Получение напряжение на шунте
busvoltage = ina219.getBusVoltage_V(); // Получение значение напряжения V
current_mA = ina219.getCurrent_mA(); // Получение значение тока в мА
power_mW = ina219.getPower_mW(); // Получение значение мощности
loadvoltage = busvoltage + (shuntvoltage / 1000); // Расчет напряжение на нагрузки
// Поочередно отправляем полученные значение в последовательный порт.
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
myTimer1 = millis();
}
Помогите пожалуйста, идеи совсем закончились
Изменено: