LoginSignup
2
4

More than 5 years have passed since last update.

Arduino+1602LCD+DS18B20で温度計を作ってみた

Last updated at Posted at 2015-08-09

16桁x2行表示のLCDモジュールと温度センサーDS18B20を使って温度計を作ってみました。

動作例

DSC01508.JPG

準備

ブレッドボードのサイズはギリギリなので、Arduino Nanoなどで試す場合はもっと大きいものを使う必要があります。

  • ブレッドボード(400穴)
  • Arduino Pro Mini(5V)
  • DS18B20
  • 16x2 LCDモジュール(HD44780互換)
  • 抵抗 2kΩ, 5.1kΩ, 510Ω
  • ジャンパ線

配線

Arduinoの4から9番ピンをLCDモジュールに接続しています。また、10番ピンをDS18B20に接続しています。

LCDモジュールのコントラスト調整用の可変抵抗が手持ちで無かったので、固定値でそれっぽいものを選びました。また、バックライトの電流制限抵抗も、見た感じ良さそうかなで決めています。

配線図

ソースコード

ライブラリを利用するだけなので、ソースコードは非常に短くなりました。LiquidCrystalライブラリはArduino同梱です。残りの2つのライブラリは下記からインストールが必要です。

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// Connections:

// rs (LCD pin 4) to Arduino pin 8
// enable (LCD pin 6) to Arduino pin 9
// LCD pins d4, d5, d6, d7 to Arduino pins 4, 5, 6, 7

// DS18B20 Wire to Arduino pin 10
#define ONE_WIRE_BUS 10

#define TEMPERATURE_PRECISION 12

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup()
{
  lcd.begin(16,2);
  lcd.clear();

  sensors.begin();
  sensors.setResolution(TEMPERATURE_PRECISION);
}

void loop()
{
  sensors.requestTemperatures(); // Send the command to get temperatures

  lcd.setCursor(0,0);
  lcd.print(sensors.getTempCByIndex(0));
  lcd.print("\xDF""C    ");
  delay(1000);
}

今回利用した1602LCDモジュールは日本語カタカナフォントが搭載されていたため、「度」を表すのに半濁点(0xDF)を利用しました。別の文字が出てしまうLCDモジュールではLiquidCrystal::createChar()でフォントを自作する必要があるでしょう。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4