その前に、0.1秒ごとに表示されても見にくいだけなので、平均値を5秒にまったりと表示してくれるよう、プログラムをアベレージ表示にします。
それからLCD表示です。#include <Wire.h> #include <LPS.h> LPS ps; void setup() { Serial.begin(9600); Wire.begin(); if (!ps.init()) { Serial.println("Failed to autodetect pressure sensor!"); while (1); } ps.enableDefault(); } void loop() { int i; float altitude = 0; float pressure = 0; float pressureave = 0; float temperature = 0; for (i = 0; i < 1000; i++){ pressureave = pressureave + ps.readPressureMillibars(); pressure = ps.readPressureMillibars(); altitude = altitude + ps.pressureToAltitudeMeters(pressure); temperature = temperature + ps.readTemperatureC(); delay(5); } pressureave = pressureave /1000; altitude = altitude /1000; temperature = temperature /1000; Serial.print("p: "); Serial.print(pressureave); Serial.print(" mbar\ta: "); Serial.print(altitude); Serial.print(" m\tt: "); Serial.print(temperature); Serial.println(" deg C"); delay(100); }
スケッチ→ライブラリをインクルード →ライブラリを管理 でlcdを検索します。
「LiquidCrystal」をインストールします。
#include <Wire.h> #include <LPS.h> #include <LiquidCrystal.h> LiquidCrystal lcd = LiquidCrystal(12,11,10,5,4,3,2); LPS ps; void setup() { Serial.begin(9600); Wire.begin(); lcd.begin(16, 2); if (!ps.init()) { Serial.println("Failed to autodetect pressure sensor!"); while (1); } ps.enableDefault(); } void loop() { int i; float altitude = 0; //高度 float pressure = 0; //気圧 float pressureave = 0; //平均気圧 float temperature = 0; //気温 for (i = 0; i < 1000; i++){ pressureave = pressureave + ps.readPressureMillibars(); pressure = ps.readPressureMillibars(); altitude = altitude + ps.pressureToAltitudeMeters(pressure); temperature = temperature + ps.readTemperatureC(); delay(5); } pressureave = pressureave /1000; altitude = altitude /1000; temperature = temperature /1000; Serial.print("p: "); Serial.print(pressureave); Serial.print(" mbar\ta: "); Serial.print(altitude); Serial.print(" m\tt: "); Serial.print(temperature); Serial.println(" deg C"); lcd.setCursor(0,0); // 液晶へ表示 //lcd.print("p: "); lcd.print(pressureave,0); lcd.print("mbr "); lcd.print(temperature,1); lcd.print(" deg C"); lcd.setCursor(0,1); lcd.print("alt: "); lcd.print(altitude,2); lcd.print(" m"); delay(100); }
温度表示での「18.2 deg C」のところ、最後のCが桁数が足りず、表示できてませんが気にしません。
かなりごちゃごちゃしてきました。
0 件のコメント:
コメントを投稿