johnny-fiveでコンパスの生データを得る(get raw data of compass)
普通には得られなさそうだったので、ライブラリの方を書き換えました。
今本家にはissueしています。できたのに、自分の調べが甘いだけだったら申し訳ないのだけど…。
とりあえず、johhy-fiveとは
node.jsでArduinoを制御できるライブラリです。
github.com
これね。使い方は簡単なんだけどarduinoに慣れていると、けっこう使い方にとまどうかもしれません。普通にarduinoでやればいい内容だったんだけど、ちょっと試してみたくなったので。
で、使い方は他のところのほうが詳しいので省略します。
JavaScriptとArduinoではじめるIoT入門 〜Johnny-Fiveを使ってみる〜 | 電子工作部
node.jsとjohnny-fiveを使って、JavaScriptでarduinoを操作してみる - 株式会社ネクスト エンジニアBlog
Johnny-Fiveでマイコン制御21 - コンパス・ジャイロ・GPS - 電子部
かなり簡単。
使い方は
npm install johnny-five
で使える。
どんなコードを書いたかというと
var five = require('johnny-five'); var board = new five.Board(); board.on("ready", function(){ var magnetometer = new five.Magnetometer({ controller: "HMC5883L", }); magnetometer.on("data", function(){ console.log('heading', Math.floor(this.heading)); console.log(this.raw); }); });
Magnetometer使わなくてもCompassを使えるし、そっちの方がスッキリするかもしれない。
とにかく
console.log(this.raw)
はundefindedとなる。悲しい。公式には得られそうな感じに書いてあるのに。
で、かなり調べた挙句、結局得られなさそうだなと思ったので、ライブラリ(モジュール)を書き換える。
currentDirectory\node_modules\johnny-five\lib
の
compass.js
を開いて
heading: { get: function() { return this.toScaledHeading(raw); } }
こんな感じのが真ん中より下の方に有る。
それの上くらいに
raw: { get: function () { return raw; } },
これを挿入する。
そうすると得られるようになる。
やったー!