質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

2回答

2252閲覧

BME280 とArduino Nano

Shokotao

総合スコア8

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2018/07/10 01:45

bme280 と Arduino nanoを使って温度の変化に合わせてledが光るようにしたいと考えています。
include <BME280_MOD-1022.h>
#include <Wire.h>

void printFormattedFloat(float x, uint8_t precision) {
char buffer[10];
dtostrf(x, 7, precision, buffer);
Serial.print(buffer);
}

// print out the measurements
void printCompensatedMeasurements(void) {
float temp, humidity, pressure, pressureMoreAccurate;
double tempMostAccurate, humidityMostAccurate, pressureMostAccurate;
char buffer[80];
temp = BME280.getTemperature();
humidity = BME280.getHumidity();
pressure = BME280.getPressure();
pressureMoreAccurate = BME280.getPressureMoreAccurate();
tempMostAccurate = BME280.getTemperatureMostAccurate();
humidityMostAccurate = BME280.getHumidityMostAccurate();
pressureMostAccurate = BME280.getPressureMostAccurate();
printFormattedFloat(tempMostAccurate, 2);
Serial.print(" ");
printFormattedFloat(humidityMostAccurate, 2);
Serial.print(" ");
printFormattedFloat(pressureMostAccurate, 2);
Serial.println();
}

// setup wire and serial

void setup()
{
Wire.begin();
Serial.begin(9600);
pinMode(16,INPUT);
pinMode(17,OUTPUT);
digitalWrite(17,0);
}

// main loop
void loop()
{
uint8_t chipID;
chipID = BME280.readChipId();
Serial.print("ChipID = 0x");
Serial.print(chipID, HEX);

// need to read the NVM compensation parameters
BME280.readCompensationParams();

BME280.writeOversamplingPressure(os1x);
BME280.writeOversamplingTemperature(os1x);
BME280.writeOversamplingHumidity(os1x);

BME280.writeMode(smForced);
while (BME280.isMeasuring()) {
Serial.println("Measuring...");
delay(50);
}
Serial.println("Done!");
// read out the data - must do this before calling the getxxxxx routines
BME280.readMeasurements();
Serial.print("Temp=");
Serial.println(BME280.getTemperature()); // must get temp first
Serial.print("Humidity=");
Serial.println(BME280.getHumidity());
Serial.print("Pressure=");
Serial.println(BME280.getPressure());
Serial.print("PressureMoreAccurate=");
Serial.println(BME280.getPressureMoreAccurate()); // use int64 calculcations
Serial.print("TempMostAccurate=");
Serial.println(BME280.getTemperatureMostAccurate()); // use double calculations
Serial.print("HumidityMostAccurate=");
Serial.println(BME280.getHumidityMostAccurate()); // use double calculations
Serial.print("PressureMostAccurate=");
Serial.println(BME280.getPressureMostAccurate()); // use double calculations

// Example for "indoor navigation"
// We'll switch into normal mode for regular automatic samples

BME280.writeStandbyTime(tsb_0p5ms); // tsb = 0.5ms
BME280.writeFilterCoefficient(fc_16); // IIR Filter coefficient 16
BME280.writeOversamplingPressure(os16x); // pressure x16
BME280.writeOversamplingTemperature(os2x); // temperature x2
BME280.writeOversamplingHumidity(os1x); // humidity x1
BME280.writeMode(smNormal);

while (1) {
while (BME280.isMeasuring()) {
}

// read out the data - must do this before calling the getxxxxx routines BME280.readMeasurements(); printCompensatedMeasurements(); delay(1000); // do this every 5 seconds

}
}

こちらのプログラムを使う際、どこにLEDのプログラムを差し込めば起動しますか?
またその際のプログラムを教えていただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2018/07/10 02:02

https://teratail.com/questions/135307 にほぼ同じコードを質問している人がいるのであなたも授業だと思うんですが、ここに丸投げの質問をせず先生に聞いてください。
Shokotao

2018/07/10 04:13

そのかたは今一緒にプロジェクトをしているかたです。お互いわからなかったので質問が重複していまいました。
coco_bauer

2018/07/11 01:35

質問のコードを動かすと、serialにつながった端末に温度、湿度、気圧の値が表示されますか? 表示されているのなら、Serial.printlnの引数の式(例えば、"BME280.getTemperature()")で温度が取得できている訳ですから、その行の後にLEDを光らせる処理を追加すると見通しのよいプログラムになると思いますよ。
guest

回答2

0

どこにLEDのプログラムを差し込めば起動しますか?

という質問でしたら
printCompensatedMeasurements();

delay(1000);
の間でしょう。

投稿2018/07/18 14:13

hillacken

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

温度を出力しているところにLEDが光るような処理を書けばいいでしょう。

さて、このコードのどこで温度を出力してますか?

投稿2018/07/10 02:46

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問