その前に、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 件のコメント:
コメントを投稿