![[PukiWiki] [PukiWiki]](image/pukiwiki.png) 
 2013/05/25からのアクセス回数 4146
Arduino in Actionの7章に出てくる例題を試してみました。
電子工作では必ずでてくるLCD出力ですが、私は後閑さんの本で紹介されている 大型のLCDを使い回しています。*1
図7.1の回路を見ながら結線します。ブレッドボード上にLCD接続用の回路を 組んでおくと便利です。
テスト用のスケッチは、以下の通りです。
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
  lcd.begin(16, 2);
  lcd.print("Arduino in");
  lcd.setCursor(0,1);
  lcd.print("Action Rocks!");
}
void loop() {
}
何とか One Wire LCD ができたので、7.3節の Werial LCD weather stationを作ってみます。
OneWireの温度センサーのDS18B20は、秋月で300円で購入しました。
Arduinoでこのセンサーを使えるように Dallas Temperature Control Library と OneWire Library を使用します。
回路は、図7.4の通りに作成します。R1は、4.7KΩを使用します。
DS18B20のピンと番号の対応は、以下の様になっています。
スケッチは、以下の通りです。
#include <serLCD.h>
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 8
serLCD myLcd(12);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void){
  Serial.begin(9600);
  sensors.begin();
  myLcd.clear();
}
void displayTemperature(int sensorIndex) {
  myLcd.clear();
  float tempInCel = sensors.getTempCByIndex(sensorIndex);
  myLcd.setCursor(1,1);
  myLcd.print("C: ");
  myLcd.print(tempInCel, 1);
  myLcd.setCursor(2,1);
  myLcd.print("F: ");
  float tempInFar = DallasTemperature::toFahrenheit(tempInCel);
  myLcd.print(tempInFar, 1);
}
void loop(void) {
  sensors.requestTemperatures();
  displayTemperature(0);
  delay(2000);
}
ブレッドボードで動作確認をしました。
皆様のご意見、ご希望をお待ちしております。