このブログを検索

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でも同様の症状が出るとのこと。

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