このブログを検索

2016年5月26日木曜日

Scratch2.0 オフラインエディタとNekoboard(Picoboard)についての問題点(その2)

オリジナル
前の記事でScratch2.0のオフラインエディタのバグの話を書いたが、とりあえずの回避方法を書いておく。
といってもそれほど特別なことではなく、センサーの数値を利用する方法。

たとえば、nekoboard(picoboard)の抵抗値ポートA~Dは、抵抗値無限大(つまりポートがつながっていない)の場合に100、抵抗値ゼロ(ショート状態)で0の値を吐く。
代替案
そこで、右図のオリジナルのような「Aがつながれた」を、代替案のように「抵抗Aセンサーの値が0になった」と読み替えてスクリプトを組むことで、とりあえずポートの状態を読むことが出来る。

なお、代替案ではセンサーの値が5以下と設定しているが、理屈上は1以下でいい。これはリード線の持つ抵抗値や、ちょっとしたノイズの飛び込みに備えて変動マージンをみている。

同じ理由で、センサーの値が100、あるいは0をポートがつながっていない状態、ショートしている状態と単純に考えて、等号(=)でつなぐことはおすすめしない。
ほんのちょっとしたノイズで読み出し数値は暴れるので、95以上でつながっていない状態、5以下でショート状態などと余裕を持って設定する方がいい。

残念ながらこの方法ではボタンの挙動だけは拾うことが出来ないので完全な解決策ではないが、お困りの方の参考になれば。


2016年5月25日水曜日

Scratch2.0 オフラインエディタとNekoboard(Picoboard)についての問題点

子供向けプログラミング言語「Scratch2.0」は前バージョンの1.4とは違ってオンライン状態のWebブラウザで動作する仕様であり、オフラインでの動作検証が出来ない。
そのため、どうしてもオフラインで使いたいという場合には「Scratch2.0オフラインエディタ」というアプリケーション(Adobe AIRランタイムで動作する)を使うことになる。
おおむねオンライン版と同じ動作をするのだけど、センサーボードの値を取りこぼすバグがあるみたいなので忘れないうちに書いておく。

スイッチサイエンスで販売されているnekoboard2(picoboard互換)は、Scratchに外部センサ入力の機能を追加することの出来るセンサーボードだ。
音声センサ、明るさセンサ、ボタンスイッチ、スライド抵抗のほか、A~Dの抵抗値を入力できるポートがある。

だが、オフラインエディタ2.0には、ボタンスイッチと、A~Dのポートの値を条件式の中に取り込まないバグがあるようだ。
(音声および明るさセンサはまだ未検証)
それぞれ単独ではちゃんと値を取り込むので、条件式などの中に入れたときだけのバグのよう。

一応オンラインエディタで同じスクリプトを走らせ、スクリプトそのものの妥当性は確認済み。
また、販売元のスイッチサイエンスに報告して検証していただいたところ、nekoboard2だけではなく、オリジナルのpicoboardでも同様の症状が出るとのこと。

困っている人も多いと思うので、早く修正されるといいのだけど。

2016年3月7日月曜日

Arduino LEONARDOでコンパイルエラー?

最近は仕事でもよくArduinoを使う。
展示用のちょっとしたガジェットの制御用に安くてそこそこ使えるので便利なのだが、最近になって以前のスケッチを再利用しようとしたところ、なぜかエラーが出てコンパイルできない。
エラーの内容は簡単で、要は”「Mouse.h」というヘッダファイルがインクルードされてませんぜ”というものなのだが、以前はそんなものなくても行けたので変だなと思い調べてみた。
結論から言うと、LEONARDO特有の機能であるHIDマウスとキーボードのエミュレート機能についての取り扱いが変わった模様。
具体的には「Keyboard.h」と「Mouse.h」は1.6系では明示的にインクルードしなくては使えなくなった。
しばらく前、Arduinoの開発チームにお家騒動が勃発し、ArduinoLLCとArduinoSRLに分裂したというニュースを聞いて心配していたのだが、いよいよその影響が出てきたという事らしい。
今回のように、ヘッダファイルの扱いが違うくらいならスケッチをちょこちょこ直せばいいだけなのでまあ許せるが、最近の新製品に関しては一方のIDEではまったく開発できないということも発生している。
僕自身はW-ROOM02という無線LAN内蔵のボードをArduinoIDEで開発したいので1.6系と呼ばれる開発環境を使っているのだけど、逆に1.7系じゃないと開発できない製品(M0やM0Pro)もある。まあ、当面M0系に手を出すつもりはないけれど、この動きが加速していくと、Arduinoって面倒くさいよねとなって、コミュニティが衰退することもあり得る。
誰もそんなことは望んでいないはずなのに、困ったもんだ。