2013/05/25からのアクセス回数 4020
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); }
ブレッドボードで動作確認をしました。
皆様のご意見、ご希望をお待ちしております。