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

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

ただいまの
回答率

90.33%

  • Arduino

    575questions

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

BME280 とArduino Nano

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 298

Shokotao

score 2

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のプログラムを差し込めば起動しますか?
またその際のプログラムを教えていただけると幸いです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mather

    2018/07/10 11:02

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

    キャンセル

  • Shokotao

    2018/07/10 13:13

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

    キャンセル

  • coco_bauer

    2018/07/11 10:35

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

    キャンセル

回答 2

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Arduino

    575questions

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