Arduino UNOとLM35/36で作るLCD温度計 - 初心者向け10分プロジェクト
部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| ブレッドボード | 1 | |
| 16x2 LCDディスプレイ (白文字/青背景等) | 1 | HD44780互換 |
| LM35 または LM36 アナログ温度センサー | 1 | LM35: 10mV/°C, LM36: 異なるスケール(データシート確認) |
| 10kΩ ポテンショメーター | 1 | LCDコントラスト調整用(50kΩでも代用可) |
| ジャンパーワイヤー | 約19本 |
これら全ては Arduino公式スターターキット に含まれています(Arduino公式ストア で購入可能)。単品購入ならAdafruit、SparkFun、AliExpress、Banggood等でも入手できます。
プロジェクト概要
Arduino UNOとLM35/36アナログ温度センサー、16x2 LCDを使ったシンプルな温度計の作り方を紹介します。特別な工学知識やプログラミングスキルは不要で、パーツが揃っていれば10分程度で完成します。初心者の最初のプロジェクトに最適です。
ステップ1: パーツの準備
ステップ2: 組み立て(配線)
- LCDをブレッドボードに挿し、Arduinoとジャンパーワイヤーで接続
- ポテンショメーターを挿し、両端をGNDと5V、中央端子をLCDのVoピン(コントラスト調整端子、通常pin 3)に接続
- 温度センサーを挿し、VCCを5V、GNDをGND、出力ピンをArduinoアナログ入力A0に接続
注意: センサーのVCC/GNDを逆に接続すると、センサーが発熱(280°C以上)して破損する恐れがあります。ピン配置をデータシートで必ず確認してください。
ステップ3: プログラミング
Arduino IDE(公式サイトからダウンロード)で以下のいずれかのスケッチを書き込みます。書き込み後、LCDに何も表示されない、または黒い長方形だけ表示される場合は、ポテンショメーターを回してコントラストを調整してください。
スケッチ 1: Gaige Kerns氏による版(LM35/LM36両対応、華氏表示)
#include <LiquidCrystal.h>
// LCD接続ピン: RS=12, E=11, D4=5, D5=4, D6=3, D7=2
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 0; // A0
int tempC, tempF;
void setup() {
lcd.begin(16, 2);
}
void loop() {
tempC = get_temperature(sensorPin);
tempF = celsius_to_fahrenheit(tempC);
lcd.setCursor(0, 0);
lcd.print(tempF);
lcd.print(" ");
lcd.print((char)223); // 度記号
lcd.print("F");
delay(200);
}
int get_temperature(int pin) {
int reading = analogRead(pin);
float voltage = reading * 5.0 / 1024.0;
return (voltage - 0.5) * 100; // LM35/LM36共通式(オフセット0.5V前提)
}
int celsius_to_fahrenheit(int temp) {
return (temp * 9 / 5) + 32;
}
スケッチ 2: シンプル版(摂氏・華氏両方表示、1秒更新)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int inPin = 0; // A0
void setup() {
lcd.begin(16, 2);
}
void loop() {
int value = analogRead(inPin);
float millivolts = (value / 1024.0) * 5000;
float celsius = millivolts / 10; // LM35: 10mV/°C
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(celsius);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print((celsius * 9) / 5 + 32);
lcd.print("F");
delay(1000);
}
動作確認
- スケッチ1: 0.2秒ごとに華氏更新(高速応答)
- スケッチ2: 1秒ごとに摂氏・華氏を2行表示
- センサーに息を吹きかけたり、氷水に触れさせたりして温度変化を確認
コードスニペット
上記の2つのスケッチはCodeセクションでも個別にダウンロード可能です。
発展のヒント
- LM35の代わりにLM35DZ(TO-92パッケージ)やTMP36等を使用可能
- I2C接続LCD(PCF8574モジュール付き)なら配線が4本で済みます
- データロガー機能追加: SDカードシールドで温度履歴を記録
- アラーム機能: 設定温度を超えたらブザーやLEDで警告
- 無線化: ESP8266でIoT温度計に発展
製造プロセス
- Samsung SAMI、Arduino UNO、Raspberry Piで高速・信頼性の高い火災検知システムを構築
- Arduino Nano 33 IoT製 フライトシミュレーター2020用コックピットパネル - LCD&CDI表示
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- Arduino UNOで作るLCDアニメーション&ゲーム入門
- Arduino UNOで1.17インチTFT LCDに画像を表示する方法
- Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
- u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
- Arduino Dueでマスターする音声認識と音声合成
- Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計
- Arduino Unoで25kHz 4ピンPWMファンを制御 – 製作・コード・テスト