2021年5月21日金曜日

DHT22+OLED 温度ロガー…その10

2021/05/21:温度湿度センサをDHT22に変更と記事の内容を初めから書きなおしました。
4月18日にDHT11とOLEDの組み合わせで作ったのですが…先達の方が作ったスケッチをコピペしてきただけなので文字が小さかったのも事実です。今回はフォントサイズを8ピクセルから10ピクセルに変更しています。※参考:u8gフォント一覧ページ→fontsize

今まで放置していたのは…4月に始めた時点ではArduinoのスケッチが理解できていなかったのも事実ですが…スケッチは今でも理解できていないのは同様で温度センサを何回かやってきたのでおぼろげに理解できる部分が出てきたのです。 
以下、自分用の覚えとして貼っておきます

/*
2021/05/21
OLED_DHT11
DHT22 Weather Station 
DHT11センサーから湿度と温度を読み取り、128X64 I2C OLEDで表示する
*/
//DHT11ライブラリー定義・読込
#include "DHT.h"
#define DHTPIN 2 // データピンはD2へ
//#define DHTTYPE DHT11   // DHT 11を使う場合 
#define DHTTYPE DHT22   // DHT 22
DHT dht(DHTPIN, DHTTYPE, 6);

//U8glibライブラリー定義・読込
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
 
char str[10];//

//タイトルを表示する 
void drawTest(void) {
  u8g.setFont(u8g_font_helvB12);// 12ピクセルでタイトルを表示
  u8g.drawStr( 10, 35, "Measurements");  
}
 
void setup() {
  Serial.begin(9600); 
  Serial.println(" DHT22 Weather Station ");
 
  dht.begin();
 //OLED描画
  u8g.firstPage();  
  do {
    drawTest();
  } while( u8g.nextPage() );
}
// 
void loop() {
  // 待機時間の設定は2秒以上~
  delay(5000);
 
// 温度・湿度の読み取り
  float h = dht.readHumidity();
  float t = dht.readTemperature();
    
  // 読み取りエラーの場合
  if (isnan(h) || isnan(t) ) {
    Serial.println("センサからのデータ読取りに失敗しました!");
    return;
  }
 
  // Compute heat index 熱指数比較・
  float hi = dht.computeHeatIndex(t, h);

 //シリアル通信 表示
  Serial.print("RH: "); 
  Serial.print(h);
  Serial.print(" %\t");
  
  Serial.print("Temp: "); 
  Serial.print(t);
  Serial.print(" *C ");
  
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *C");
  
  // 温度・湿度の描画 loop部分
  u8g.firstPage();  
  do {
    u8g.setFont(u8g_font_helvB10);//フォントサイズ10のほうが見やすい  
    u8g.drawStr( 5, 20, "Temp:");
    u8g.drawStr( 50, 20, dtostrf(t, 5, 2, str));
    u8g.drawStr( 90, 20, "\260C");
    
    u8g.drawStr( 5, 40, "RH:");
    u8g.drawStr( 50, 40, dtostrf(h, 5, 2, str));
    u8g.drawStr( 90, 40, "%");   
        
    u8g.drawStr( 5, 60, "Heat:");
    u8g.drawStr( 50, 60, dtostrf(hi, 5, 2, str));
    u8g.drawStr( 90, 60, "\260C");
    
  } while( u8g.nextPage() );
}