CJMCU-280 재문의

메카 2016-10-18 (화) 17:38 7년전 2454  

온도,습도,대기압 0
도고 44330.00m 으로만 나옵니다



SCK pin to Digital #13
SDO pin to Digital #12
SDI pin to Digital #11
CS pin Digital #10


https://learn.adafruit.com/adafruit-bme280-humidity-barometric-pressure-temperature-sensor-breakout/wiring-and-test


예제처럼 10~13번을 연결하였습니다.


코드







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

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

  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_Sensor.h>
#include <Adafruit_BME280.h>

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

//Adafruit_BME280 bme; // I2C
Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

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

bme.begin();
/*
  if (!bme.begin()) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
  */
 
 
}

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

    Serial.print("Pressure = ");

    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");

    Serial.print("Approx. Altitude = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
    Serial.println(" m");

    Serial.print("Humidity = ");
    Serial.print(bme.readHumidity());
    Serial.println(" %");

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



==================================



안녕하세요 메카솔루션입니다.

문의주신 내용의 경우, 값이 이상하게 나오고 있는 이유는 여러가지가 있을 수 있으나 가장큰것은  사용하고 있는 보드에 따라 통신에 필요한 단자가 다르기 때문입니다.

어떠한 아두이노 보드를 사용하고 있는지 알 수 있을까요?

감사합니다.

담당자: yevgeny


==================================



WiDo 보드를 사용하고 있습니다.


얼마전에 주문했었습니다, 주문번호 1474276999622


I2C 및 SPI 방법으로 해봤습니다.


둘다 똑같은 값만 나오고 있습니다.




==================================



안녕하세요 메카솔루션입니다.

아두이노 레오나르도 보드의 SPI핀은 10~13번핀이 아니기때문에 회로를 변경해주셔야합니다,

레오나르도에서 SPI통신을 사용하시려면, 레오나르도 보드의 2x6핀으로 구성된 isp단자를 이용해주셔야합니다.

마찬가지로 레오나르도에서 I2C통신을 사용하시려면, A4, A5번핀을 사용하지 않고, 리셋버튼 아래쪽의 SCL, SDA핀을 사용해주셔야합니다.

감사합니다.

담당자: yevgeny
메카리워즈 Image Map


모바일 버전으로 보기