2013/05/25からのアクセス回数 3814 Arduino in Actionの7章に出てくる例題を試してみました。 LCDに出力 †電子工作では必ずでてくる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温度計 †何とか 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); } ブレッドボードで動作確認をしました。 コメント †皆様のご意見、ご希望をお待ちしております。 Tweet |