Sensor module for temperature, air pressure, and humidity

Dependencies:   DHT11 LM75B mpl115a2

Dependents:   WeatherPredictor

Committer:
yukari_hinata
Date:
Fri Feb 13 07:46:49 2015 +0000
Revision:
0:98946a466ef8
Child:
1:3d6d2ff7ff8a
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yukari_hinata 0:98946a466ef8 1 #include "SensorModule.hpp"
yukari_hinata 0:98946a466ef8 2
yukari_hinata 0:98946a466ef8 3 // コンストラクタ
yukari_hinata 0:98946a466ef8 4 SensorModule::SensorModule(int n_sample)
yukari_hinata 0:98946a466ef8 5 {
yukari_hinata 0:98946a466ef8 6 // サンプリング回数, ログファイル名の初期化
yukari_hinata 0:98946a466ef8 7 this->n_sample = n_sample;
yukari_hinata 0:98946a466ef8 8 this->temperture_sensor = new AnalogIn(p15);
yukari_hinata 0:98946a466ef8 9 this->humidity_sensor = new DHT11(p10);
yukari_hinata 0:98946a466ef8 10
yukari_hinata 0:98946a466ef8 11 }
yukari_hinata 0:98946a466ef8 12
yukari_hinata 0:98946a466ef8 13 // デストラクタ
yukari_hinata 0:98946a466ef8 14 SensorModule::~SensorModule(void)
yukari_hinata 0:98946a466ef8 15 {
yukari_hinata 0:98946a466ef8 16 delete temperture_sensor;
yukari_hinata 0:98946a466ef8 17 delete humidity_sensor;
yukari_hinata 0:98946a466ef8 18 }
yukari_hinata 0:98946a466ef8 19
yukari_hinata 0:98946a466ef8 20 // 全センサーからn_sample回読み出し, 平均値で更新する.
yukari_hinata 0:98946a466ef8 21 void SensorModule::read_all_sensor(void)
yukari_hinata 0:98946a466ef8 22 {
yukari_hinata 0:98946a466ef8 23 register float sum_temp = 0, sum_humid = 0, sum_pres = 0;
yukari_hinata 0:98946a466ef8 24
yukari_hinata 0:98946a466ef8 25 // AnalogInを用いる場合は,n_samle回センサーから読み出す.
yukari_hinata 0:98946a466ef8 26 for (int count = 0; count < n_sample; count++ ) {
yukari_hinata 0:98946a466ef8 27 // LM61CIZの温度読み取り
yukari_hinata 0:98946a466ef8 28 sum_temp += (temperture_sensor->read()-(0.6/3.3))/(0.01/3.3);
yukari_hinata 0:98946a466ef8 29 wait(0.1);
yukari_hinata 0:98946a466ef8 30 }
yukari_hinata 0:98946a466ef8 31
yukari_hinata 0:98946a466ef8 32 new_temperture = sum_temp / n_sample;
yukari_hinata 0:98946a466ef8 33 new_pressure = sum_pres / n_sample;
yukari_hinata 0:98946a466ef8 34
yukari_hinata 0:98946a466ef8 35 // 更新.
yukari_hinata 0:98946a466ef8 36
yukari_hinata 0:98946a466ef8 37 // DHT11の湿度読み取り
yukari_hinata 0:98946a466ef8 38 if (humidity_sensor->readData() != DHT11::OK) {
yukari_hinata 0:98946a466ef8 39 fprintf( stderr, "Error in Humidity Sensor \r\n");
yukari_hinata 0:98946a466ef8 40 } else {
yukari_hinata 0:98946a466ef8 41 new_humidity = float(humidity_sensor->readHumidity());
yukari_hinata 0:98946a466ef8 42 }
yukari_hinata 0:98946a466ef8 43
yukari_hinata 0:98946a466ef8 44 }