obnizのフォーラムは新しいシステムに移行しております。
新しいフォーラムはこちらになりますIRセンサの`wired()`エラーについて
-
最新バージョン(ver2.2.0)のnpmパッケージにて
IRModule
およびIRSensor
のwired()
を行うと以下のエラーが発生します。throw new Error('recv is not valid io');
ひとつ前のバージョン(ver2.1.0)ですとエラーは発生しませんが、obnizのディスプレイに表示される
PIN ASSIGN
が何も割り当てられてない状態となり、動作もしません。以下の環境での状況となります。
OS: Windows10
Node.js: v10.16.0なおWebのパーツライブラリページからは動作しています。
対処法がありましたらご教示頂けますと幸いです。
以上、よろしくお願い致します。
-
@田中みそ さん
エラー内容としてはrecvピンが指定されていない という内容のようです。
obniz.wiredでのピンの指定を教えてもらってもいいでしょうか。下記のように書いた場合、エラーは確認できませんでした。
var module = obniz.wired('IRModule', { vcc: 0, send: 1, recv: 2, gnd: 3 });
var sensor = obniz.wired('IRSensor', {vcc:0, gnd:1, output: 2});
-
@kido さん
ご返信ありがとうございます。ピン指定はご記載頂いた内容と同じでした。
コードは
IRModule
のドキュメントページのstart(callback(array))
のコードをそのままjsにコピーしnodeより実行しています。
https://obniz.io/ja/sdk/parts/IRModule/README.mdconst Obniz = require("obniz") const obnizId = "xxxx-xxxx" const obniz = new Obniz(obnizId) var module = obniz.wired('IRModule', { vcc: 0, send: 1, recv: 2, gnd: 3 }); module.start(function (arr) { console.log('detected!!') console.log(JSON.stringify(arr)); })
なお同コードをhtmlにて実行した場合は問題なく動作しております。
-
@田中みそ さん
プログラムありがとうございます!確認しました。
obniz.onconnect = async function(){ ... }
が抜けているようです。
下記のように、obniz.onconnect
で囲んで記載いただけるようお願いいたします。const Obniz = require("obniz") const obnizId = "xxxx-xxxx" const obniz = new Obniz(obnizId) obniz.onconnect = async function() { var module = obniz.wired('IRModule', { vcc: 0, send: 1, recv: 2, gnd: 3 }); module.start(function (arr) { console.log('detected!!') console.log(JSON.stringify(arr)); }) };
HTMLやobniz.js2.1.0で正常動作していたのは、
const obniz = new Obniz(obnizId)
とvar module = obniz.wired(...)
の間でたまたまobnizとの接続が確立してしまっていたからかと思われます。
どのタイミングでobnizとの接続が確立できるかは状況次第(PCやブラウザに依存もします)ですので、onconnect
を使用いただけるようお願いいたします。
-
@kido さん
解決方法をご教示頂きありがとうございます!
onconnect
を行えば問題なく動作しました。
初歩的な問題で大変恐縮です…
ありがとうございました!