FrontPage

2013/05/25からのアクセス回数 3814

Arduino in Actionの7章に出てくる例題を試してみました。

LCDに出力

電子工作では必ずでてくるLCD出力ですが、私は後閑さんの本で紹介されている 大型のLCDを使い回しています。*1

Bread7_1.png

図7.1の回路を見ながら結線します。ブレッドボード上にLCD接続用の回路を 組んでおくと便利です。

Fig7_1.png

動作確認

テスト用のスケッチは、以下の通りです。

#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 LibraryOneWire Library を使用します。

回路

回路は、図7.4の通りに作成します。R1は、4.7KΩを使用します。

Fig7_4.png

DS18B20のピンと番号の対応は、以下の様になっています。

DS18B20_pin.png

スケッチと動作確認

スケッチは、以下の通りです。

#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);
}

ブレッドボードで動作確認をしました。

Bread7_4.png

コメント

選択肢 投票
おもしろかった 1  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)


*1 半固定抵抗をLCDに付けているので便利です

添付ファイル: fileFig7_4.png 1225件 [詳細] fileFig7_1.png 1340件 [詳細] fileDS18B20_pin.png 1193件 [詳細] fileBread7_4.png 1383件 [詳細] fileBread7_1.png 1283件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-08-20 (土) 15:27:41 (616d)
SmartDoc