温度センサーをつなぐ(その1)
温度センサー(ADT7410のI2Cモジュール)を設置します。
【材料】
・温度センサー(ADT7410のI2C接続モジュール)(秋月)
・ブレッドボードとブレッドボード用ジャンパ線(オス・オス)数本(前回既出)
【つなぎ方】
・ArduinoのA4とA5は、複数接続できるようにブレッドボード(例えば使っていない方の「+」と「―」)に取り出し、そこからLCDと温度センサーにつなぎます。
・温度センサーモジュールから4本の線が出ています。以下、温度センサー側の表示とArduino側の接続先を示します。すべてブレッドボードを介して接続します。
・GND → GND
・VCC → 5V
・SDA → A4
・SCL → A5
・I2C接続デバイスにはI2Cアドレスが必要です。この温度センサーはデフォルトアドレス”0x48”を用いることにします。
【ライブラリのインストール】
・この温度センサーを使うには、ライブラリのインストールが必要です。
・Arduino IDE画面最上段メニュー「ツール」→「ライブラリを管理」を選ぶと、左カラムにライブラリマネージャーが現れます。そのタイトルの直ぐ下に検索欄があるので「ADT7410」と入力します。「Adafruit ADT7410 Library」というライブラリがヒットするので、それを「インストール」します。窓「ライブラリの依存関係をインストール」が表示されるので、「全てをインストール」をクリックします。出力画面に「インストールは成功しました。」という言葉が一瞬表示されます。
【スケッチ】
Arduino IDEのスケッチ画面に以下のスケッチを書きます。
ヒーターをつなぐ(その3)のスケッチに、「コメント付き行」を追加します。
// 最初の宣言です
#include <Wire.h> //I2C通信のライブラリ(忘れていました。でもLCDは動いた?)
#include <Adafruit_ADT7410.h> // ADT7410のライブラリ読み込み
Adafruit_ADT7410 Temp1 = Adafruit_ADT7410(); // ADT温度センサーをTemp1と名付けます
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int LED = 3;
int SSR = 6;
int Value = 20; // ヒーターへの出力を少し強めました
float Duty = 0.0;
void setup(void) {
Serial.begin(9600);
Wire.begin(); // I2C通信開始(忘れていました。)
Temp1.begin(0x48); // アドレスは0x48(デフォルト)
Temp1.reset(); // ソフトウェア・リセット
Temp1.setResolution(ADT7410_16BIT); // 解像度=16bitを設定
delay(250); // タイミング調整用?
lcd.init();
lcd.backlight();
pinMode(LED,OUTPUT);
pinMode(SSR,OUTPUT);
// ここにあった「Danger!」表示は削除しました
}
void loop(){
float Cdeg = Temp1.readTempC(); // セ氏で温度(実数)を読み込む
Serial.println(Cdeg); // Arduino IDEのシリアルモニタに温度を出力
analogWrite(LED, Value);
analogWrite(SSR,Value);
lcd.setCursor(0,1);
lcd.print("Duty = ");
lcd.setCursor(10,1);
Duty = (float)Value * 0.392 + 0.5;
lcd.print((int)Duty);
lcd.setCursor(15,1);
lcd.print('%');
lcd.setCursor(0,0); // カーソルを左上に移動
lcd.print("TempADT= "); // 温度=
lcd.print(Cdeg,2); // Cdeg を小数点2桁で表示
lcd.setCursor(15,0); // カーソルを右上に移動
lcd.print("C"); // セ氏温度の単位表示
delay(10000); // 10秒間隔で温度測定・表示
}
【実行】
・スケッチ画面の上段にある「→」アイコンをクリックすると、スケッチのコンパイル(機械語翻訳)が行われ、Arduinoにダウンロードされます。Arduinoは直ちにそれを実行します。
・1602ディスプレイに「TempADT= ◯◯.◯◯ C」と、「Duty ratio = 8 %」という表示が出ましたでしょうか?
・TempADTの値は10秒ごとに変化します。
・Arduino IDEの「シリアルモニタ」(窓右上の虫メガネみたいなのをクリック)で、温度がPCの方にも表示されます。
・ブレッドボード上のLEDが更に明るくなりましたでしょうか?
・お疲れ様です。
・次回はArduinoからmacに送られたデータを元に、温度変化のグラフをPythonで描いてみます。