このサイトはMacを使って Arduino Uno の動作や活用法を学びます。

16 Arduino LCD に温度を表示

この記事では、Arduino に、DHT11温度湿度センサーを接続し16x2文字のLCD表示器に、温度と湿度を表示します。

今までに実施してきた

 [12] Arduino 温度湿度センサーを接続 と

 [15] Arduino 16 x 2 文字の LCD を接続 を組み合わせたプログラムになります。

 

前回のハードウエアに、DHT11温度湿度センサーを追加で接続します。

 * LCD DATA  --> digital pin 2
 * LCD VDD --> 5V
 * LCD VSS --> GND
 

 

 

 

 

スケッチ内容

LCDが接続されているピンを指定して LCDインスタンスを作成します。

さらにLCDのタイプ(16x2)を指定し、センサーピンを設定すると準備完了です。

次は、温度湿度センサーから情報を読み出し、print命令でLCDに表示します。

今まで実施したスケッチのコピペで完成します。

 

// LCD に温度を表示
// 2021-6-10

#include <LiquidCrystal.h>

int DHT_PIN = 2;    // DHT11 接続ピン

//                BS  E  D4 D5  D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup()
{
  lcd.begin(16, 2);
  pinMode(DHT_PIN,INPUT_PULLUP);
}
  
void loop()
{
  // DHTモジュールによる温度測定
  int data[5];  // 読み込みデータを保管

  // DHT_PIN ピンに Start信号を送る
  pinMode(DHT_PIN, OUTPUT);
  digitalWrite(DHT_PIN,LOW);
  delay(20);
  pinMode(DHT_PIN,INPUT_PULLUP);

  // Response信号の空読み
  pulseIn(DHT_PIN, HIGH, 300);

  // Byte x 5 計40Bites を読み込む
  for(int dataIdx=0;dataIdx<5;dataIdx++){
    data[dataIdx] = 0;
    for(int bitIdx=0;bitIdx<8;bitIdx++){
      data[dataIdx] <<= 1;
      // HIGH が 50ms を越えれば「1」
      if(pulseIn(DHT_PIN, HIGH, 300) > 50)
          data[dataIdx] += 1;
    }
  }
  // DHT11 からの温度データを表示
  lcd.setCursor(0, 0);
  lcd.print("DHT Temp     C  ");
  lcd.setCursor(9, 0);
  lcd.print(data[2]);
  // DHT11 からの湿度データを表示
  lcd.setCursor(0, 1);
  lcd.print("    Humi     %  ");
  lcd.setCursor(9, 1);
  lcd.print(data[0]);

  delay(2000);
}
 

動作の確認

スケッチを Arduino に書き込みプログラムがスタートすると、
LCD上に温度と湿度が表示されます。
 
 

 

次回は、デジタルICを追加して、デジタル出力ポートの増設をします。