16 Arduino LCD に温度を表示
この記事では、Arduino に、DHT11温度湿度センサーを接続し16x2文字のLCD表示器に、温度と湿度を表示します。
今までに実施してきた
[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を追加して、デジタル出力ポートの増設をします。