Проблема с bmp280

Nubas_
Offline
Зарегистрирован: 19.07.2021

Вывожу в порт значения высоты и, допустим, показывает 100 метров, а потом раз и подпрыгнуло до 20000, потом так же 100 метров, а потом раз и опять до 20000 подпрыгнуло и так несколько раз и потом программа как будто останавливается, а потом если еще раз открыть порт, то пишет что модуль не подключен.

Код из примера



/***************************************************************************
  This is a library for the BMP280 humidity, temperature & pressure sensor

  Designed specifically to work with the Adafruit BMP280 Breakout
  ----> http://www.adafruit.com/products/2651

  These sensors use I2C or SPI to communicate, 2 or 4 pins are required
  to interface.

  Adafruit invests time and resources providing this open source code,
  please support Adafruit andopen-source hardware by purchasing products
  from Adafruit!

  Written by Limor Fried & Kevin Townsend for Adafruit Industries.
  BSD license, all text above must be included in any redistribution
 ***************************************************************************/

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>

#define BMP_SCK  (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS   (10)

Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);

void setup() {
  Serial.begin(9600);
  Serial.println(F("BMP280 test"));

  //if (!bmp.begin(BMP280_ADDRESS_ALT, BMP280_CHIPID)) {
  if (!bmp.begin()) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring or "
                      "try a different address!"));
    while (1) delay(10);
  }

  /* Default settings from datasheet. */
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}

void loop() {
    Serial.print(F("Temperature = "));
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");

    Serial.print(F("Pressure = "));
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");

    Serial.print(F("Approx altitude = "));
    Serial.print(bmp.readAltitude(1013.25)); /* Adjusted to local forecast! */
    Serial.println(" m");

    Serial.println();
    delay(2000);
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Прицепил трехвольтовый модуль к пятивольтовому МК?

Nubas_
Offline
Зарегистрирован: 19.07.2021

sadman41 пишет:
Прицепил трехвольтовый модуль к пятивольтовому МК?

на 3.3V контакт

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а сигнальные сопряг?

Nubas_
Offline
Зарегистрирован: 19.07.2021

ua6em пишет:

а сигнальные сопряг?

как понять?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Nubas_ пишет:

ua6em пишет:

а сигнальные сопряг?

как понять?

перевести уровни сигналов с 3.3 вольта до 5 требуемые ардуине и обратно

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

ua6em пишет:

перевести уровни сигналов с 3.3 вольта до 5 требуемые ардуине и обратно

Ардуина не требует уровни сигналов строго 5В, там и 3.3В будет достаточно. А вот для модуля могут быть варианты...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

У меня 2 BME280 и так работают, без level converters.  На тот момент CD4050 еще не приехали, я попробовал, всё заработало.  Потом забил. 

sadman41
Offline
Зарегистрирован: 19.10.2016

По SPI?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

sadman41 пишет:
По SPI?

нет, по I2C

sadman41
Offline
Зарегистрирован: 19.10.2016

А у TC по SPI. Не знаю, что там у боша внутрях, но китайцы не зря левелшифтеры ставят. Могли бы и сыканомить.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

sadman41 пишет:
А у TC по SPI.
Да. Не разглядел сослепу.