Koshianのレッスンゴレライ4(温度センサー)
今夜はi2c通信のレッスンです。
秋月電子で購入したモジュールです。
ADT7410とプルアップ抵抗が載っているだけです。
Koshianのi2cに接続する時は、J1とJ2を半田でショートし、SCLとSDAのプルアップ抵抗を有効にしておきます。
テストコード
k.i2cMode(k.KONASHI_I2C_ENABLE_400K);
timer_hdl = setInterval(function () {
k.i2cStartCondition();
k.i2cWrite(1, 0x00, adr_adt7410); //アドレス指定
k.i2cRestartCondition();
k.i2cReadRequest(2, adr_adt7410); //測定値読み出し要求
$("#message").html(count);
count = count + 1;
}, 1000);
setIntervalにて1秒周期で、ADT7410から2バイトの測定値読み出しを要求しています。注)スレーブアドレスは接続するデバイスに合わせます。
k.completeReadI2c(function () {
"use strict";
k.i2cStopCondition();
k.i2cRead(2, function (data) {
var readdata = 0, temp = 0;
readdata = (data[0] * 256) + data[1];
$("#readdata").html("ADT7410 read " + readdata);
temp = readdata / 8;
if (temp >= 4096) {
temp = temp - 8192;
}
$("#temperature").html("temperature " + temp * 0.0625 + "℃");
});
});
読み出し要求に対してKonashiからiPhoneに読み出し値が返ってきたら、ストップコンディションを送ってi2c通信を終了させた後、ADT7410の仕様に従って温度値に変換して表示しています。
本来はビット演算の方が判りやすいのですが、javascriptのコードチェッカーとして使用しているJSLintがビット演算禁止!と怒るので上記のようなコードになっています。 Brackets組み込みのJSLintのオプション設定変更の方法が不明なんですわ。
次回はi2cに気圧センサーを繋ぎます。
以前RaspberryPiに繋いだ温度センサーADT7410を使用します。
秋月電子で購入したモジュールです。
ADT7410とプルアップ抵抗が載っているだけです。
Koshianのi2cに接続する時は、J1とJ2を半田でショートし、SCLとSDAのプルアップ抵抗を有効にしておきます。
テストコード
k.i2cMode(k.KONASHI_I2C_ENABLE_400K);
iPhoneとKonashiの通信が確立したら、まずはi2c通信を有効にします。注)通信レートは100Kbpsと400Kbpsのいずれかを、接続するデバイスに合わせて選択します。
timer_hdl = setInterval(function () {
k.i2cStartCondition();
k.i2cWrite(1, 0x00, adr_adt7410); //アドレス指定
k.i2cRestartCondition();
k.i2cReadRequest(2, adr_adt7410); //測定値読み出し要求
$("#message").html(count);
count = count + 1;
}, 1000);
setIntervalにて1秒周期で、ADT7410から2バイトの測定値読み出しを要求しています。注)スレーブアドレスは接続するデバイスに合わせます。
k.completeReadI2c(function () {
"use strict";
k.i2cStopCondition();
k.i2cRead(2, function (data) {
var readdata = 0, temp = 0;
readdata = (data[0] * 256) + data[1];
$("#readdata").html("ADT7410 read " + readdata);
temp = readdata / 8;
if (temp >= 4096) {
temp = temp - 8192;
}
$("#temperature").html("temperature " + temp * 0.0625 + "℃");
});
});
読み出し要求に対してKonashiからiPhoneに読み出し値が返ってきたら、ストップコンディションを送ってi2c通信を終了させた後、ADT7410の仕様に従って温度値に変換して表示しています。
本来はビット演算の方が判りやすいのですが、javascriptのコードチェッカーとして使用しているJSLintがビット演算禁止!と怒るので上記のようなコードになっています。 Brackets組み込みのJSLintのオプション設定変更の方法が不明なんですわ。
次回はi2cに気圧センサーを繋ぎます。
コメント
コメントを投稿