2015年10月24日土曜日

Intel Edisonと温度センサ(I2C)で温度取得 node.js編

Intel Edisonと温度センサ(I2C)にnode.jsを利用して温度取得をやったのでメモ

使用したセンサは秋月のコレ(M-06675)。

付属の細ピンヘッダを半田付けしてブレッドボードにさして使用した。

今回の回路図は下図の通り。


「J20pin2」を「M-06675」のVDD、「J17pin7」を「M-06675」のSCL、
「J17pin9」を「M-06675」のSDA、「J19pin3」を「M-06675」のGNDに繋ぐ。

今回のコードは以下の通り。

温度取得

var m = require('mraa'); //require mraa
console.log('MRAA Version: ' + m.getVersion()); //write the mraa version to the

x = new m.I2c(0);//「0」で「I2C-6」、「1」でI2C-1っぽい
x.address(0x48);//M-06675のバスアドレス

var buff = new Buffer(2);//16ビットのバッファを用意

periodicActivity();

function periodicActivity()
{
        buff = x.read(2);
        var tmp = buff[0] * 256 + buff[1];
        console.log(Math.floor(tmp/128) + "." + Math.floor(tmp%128*100/128));
        setTimeout(periodicActivity,1000);
}

実行すると1秒毎に温度が取得できる。

実行

>node i2c.js
MRAA Version: v0.7.2
24.81
24.81
24.81
25.25
26.50
27.0
27.37
26.87
26.31
26.12
25.93
25.75
25.62


1秒周期で温度を取得する。

温度センサに指を当ててみたところ、「24.81」から上昇し、
指を離すと「27.37」から下降したので上手く温度が取得できてるはず。

2015年10月8日木曜日

【PowerShell】StreamWriterでファイル書き込み

「PowerShell」で「.net」の「StreamWriter」を使ってファイルに書き込む際のメモ

構文
PS D:\@temp> $writer = New-Object System.IO.StreamWriter('[ファイル名]', 追記・上書き切り替えのboolean値,[Text.Encoding]::GetEncoding('ファイルのエンコード'))

PS D:\@temp> $writer.WriteLine("[書き込む文字列]")

PS D:\@temp> $writer.Close()

以下解説、

「$writer = New-Object System.IO.StreamWriter('[ファイル名]', 上書きON/OFFのboolean値,エンコード)」で書き込み用のストリームを開く。

第一引数の「[ファイル名]」は書き込むファイルのファイル名。

第二引数の「追記・上書き切り替えのboolean値」は「$true」で追記、「$false」で上書き。

第三引数のエンコードは「shift_jis」とか「utf-8」を指定する。
ちなみに「utf-8」だとBOMが付くので、BOM無しを指定する場合は
「[Text.Encoding]::GetEncoding('ファイルのエンコード')」の代わりに
「 (New-Object System.Text.UTF8Encoding($false))」を指定する。