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))」を指定する。


2015年9月30日水曜日

【C#】C#でファイル出力する際の備忘

仕事で試験データのCSVファイルを作る場合、普段はPowerShellを使って作成しているが
何千万行のCSVファイルを作るには速度が遅いので、「.NET FrameworkだけでC#のコンパイル」を利用してC#でCSVファイルを作ることがあるのでファイル出力の手順を忘れないようにメモ。

とりあえず、以下のコードを備忘のために記載。
ファイル出力

using System;
using System.IO;


class Program
{
    static void Main(string[] args)
    {
        StreamWriter writer = new StreamWriter(@"D:\@temp\hello_word.txt", false, new System.Text.UTF8Encoding(false));
        writer.WriteLine("ハローワールド");
        writer.Close();
    }
}


StreamWriterの説明はココを参照。

第一引数はファイル名。
第二引数は追記の有無。
第三引数はエンコード。

第三引数に指定するエンコードで個人的によくよく使うのは以下、

個人的によく使うエンコード

new System.Text.UTF8Encoding(false) // utf8 BOM無し

System.Text.Encoding.GetEncoding("Shift_JIS") // sjis

以上。

2015年9月26日土曜日

「setx」で環境変数を設定する。

環境変数を永続的に設定する場合は「setx」を使用する。

コマンド

>setx 変数名 変数の値

>setx /M 変数名 変数の値

「/M」オプションをつけない場合はユーザ環境変数、つけるとシステム環境変数。
システム環境変数を設定する場合は管理者権限でコマンドプロンプトを実行する。

※「set」コマンドの場合は設定したコマンドプロンプト内でしか設定されない。

2015年9月16日水曜日

【Intel Edison】Intel Edison Breakout Board KitでLチカ node.js編

Intel Edisonでnode.jsを利用してLチカをやったのでメモ

回路図はココ(C言語編と同じ)を参考。

node.jsの環境構築は初期化した際に入っていたので省略。

ソースコードはサンプルがあったのでMRAAのポートを変更するだけですんだ。

サンプルを保存して、MRAAのポートを書き換え

MRAAのポートを書き換え

var myLed = new m.Gpio(48); //J20のpin7は48番

実行する。

実行

>node Blink-IO.js


1秒周期でLチカする。

2015年9月7日月曜日

【PowerShell】PowerShellで.NETのMath クラスを呼ぶ

PowerShellで.NETのMath クラスを呼ぶ時の備忘
「[math]::メソッド」で呼べる。

呼べるメソッドはココを参照。


円周率
PS > [math]::pi
3.14159265358979

2値を比較し大きいほうの値を得る
PS > [math]::max(10,20)
20

2値を比較し小さいほうの値を得る
PS > [math]::min(10,20)
10

sin(π/2)
PS > [math]::sin([math]::pi/2.0)
1

for文やらファイル出力と組み合わせてテストデータを作る時に便利。

2015年8月31日月曜日

【.NET】 .NET FrameworkだけでC#のコンパイル

「.NET」が入っているWindwsに「C#」と「Visual Basic .NET」のコンパイラが標準で
含まれていると聞いたので「C#」で「hellow, world」を試してみる。
※Windows Vista以降だと標準で入っている。

コンパイラは
「C:\Windows\Microsoft.NET」配下の「Framework」or「Framework64」の下
「v#.NETのバージョン#」のフォルダに「csc.exr」(C#)、「vbc.exe」の名前で入っている。

とりあえず、「C#」で「hellow, world」


「hellow, world」のソース

using System;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello, world");
        }
    }
}

ソースをファイル名「helloworld.cs」で保存。

今回は「C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe」でコンパイル&実行


コンパイル&実行

d:\@temp>C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe helloworld.cs
Microsoft (R) Visual C# Compiler Version 4.0.30319.36242
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.


d:\@temp>helloworld.exe
hello, world


「Visual Studio」無しに「C#」と「VB.NET」のコンパイルができる。