Здравствуйте! Пытаюсь подключить датчик bmp280, купленный на (Aliexpress). Подключали к ардуино нано через I2C: VCC - 3.3v GND - GND SCL - A5 SDA - A4 I2C сканер видит устройство под адресом 0х76. Перепробовал различные библиотеки (Adafruit_BMP280.h, BME280, SparkFun BME280) При запуске скета в мониторе порта пишется что датчик не найден: Код: Код (C++): #include <Adafruit_BMP280.h> Adafruit_BMP280 bmp280; void setup() { Serial.begin(9600); Serial.println(F("BMP280")); while (!bmp280.begin(BMP280_ADDRESS - 1)) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); delay(2000); } } void loop() { float temperature = bmp280.readTemperature(); float pressure = bmp280.readPressure(); float altitude = bmp280.readAltitude(1013.25); Serial.print(F("Temperature = ")); Serial.print(temperature); Serial.println(" *C"); Serial.print(F("Pressure = ")); Serial.print(pressure); Serial.println(" Pa"); Serial.print(F("Altitude = ")); Serial.print(altitude); Serial.println(" m"); Serial.println(); delay(2000); } Замерял питание, подается нужные 3.3v. Я покупал 2 датчика, оба ведут себя одинаково. Я думаю что что проблема может быть с библиотекой. Подскажите плиз.
В библиотеке стоит дефолтный адрес устройства - 0x77. Я так подозреваю это делали чтобы настроится на устройство с адресом 0х76 (как и у меня). Я пробовал с -1 и без, никакой разницы.
1. каково напряжение ардуины? Там точно всё нормально с логическими уровнями? 2. begin может вернуть false только в одном случае - если устройство (датчик) ответило chipid не 0x58. Так напечатай, что оно ответило и скажи нам, чего вслепую-то гадать?
Заработало потому, что в бибилиотеке cactus_io_BME280_I2C прописан CHIPID 0x60, а в Adafruit_BMP280_Library CHIPID 0x58. Также следует учесть, что в датчике вывод SD0 - формирует адрес на шине: SD0 на VCC адрес 0х77, SD0 на GND - 0х76.