[Squeak-ja: 4599] Re: Scratch + Arduinoいろいろ試してます
Kazuhiro ABE
abee.abe @ nifty.ne.jp
2011年 7月 22日 (金) 23:26:15 JST
阿部です。
鎌田さん、お久しぶりです。
2011年7月21日17:32 Toshiyuki Kamada <tkamada @ gmail.com>:
> Squeakのリストに対して、Scratchの話題で恐縮です。阿部さんに直接お話できる場所がここぐらいかと思い、参加させていただきました。
ご指名いただくのはさておき、ScratchもSqueakなので構わないと思います。
> モーター制御で、サーボモーターを追加しようと思い、ArduinoのServo標準オブジェクトを使えばArduino側はなんとかなる見込みが立ったのですが、Scratch側をどうしようということで、Smalltalkのブラウザを開いてコードを追いかけています。
>
> そこで、コードを見ていると、#(84 254 xx
> xx)というバイト列をScratchは送信しているように思うのですが、Arduino側では最後の1バイトだけを見ているように見えます。
>
> また、モータ番号として1〜6が設定されるようなのですが、このあたりをうまく受け取ってサーボモーター番号決め打ちみたいなhackができるのかどうか、といったあたりも含めてお伺いしたくメールさせていただいている次第です。
たぶんこれはGoGo Boardのコードですね。
http://www.gogoboard.org/
Scratchが標準でサポートするデバイスには、SensorBoard(aka PicoBoard)、WeDo、そしてGoGo Boardがあります。
この内、SensorBoardとGoGo
Boardは排他で、ScratchBoard監視盤(SensorBoardMorph)のShift+右ボタンメニューで切り替えます(SensorBoardMorph>>rightButtonMenu)。
モーター関連のメソッドはGoGo BoardとWeDoのものが混ざっており、センダーなどを確認してどちらに属するものか調べる必要があります。
> ただ、モータ番号を指定するブロック(Morph)はありませんので、現在の実装がどうなっているのか、変更するならどのあたりか、といったことを若干ご示唆いただければと思っております。
SensorBoardWithMotorで私が変更したのはSensorBoardの方です。このプロトコルは、ボードへのデータ送信要求として1サイクルごとにPCから1バイト(16r01)を送っていたので、これをモーター1個分の回転方向用に2ビット、モーターのパワー用に6ビット使って送信するように変えました(SensorBoardMorph>>processIncomingData)。
UIのブロックとそのためのメソッドはWeDo用のものを流用しています(ScriptableScratchMorph>>motorOn:など)。
その他の変更箇所は、SensorBoardWithMotor.1.csをご覧ください。
この設計は、ArduinoにSensorBoardとWeDoの両方の機能を持たせ、ハード、ソフト共に最低限の変更(モータードライバーとWeDo用コネクターの追加など)で低コストに両方の機能を活かしつつ、プロジェクトファイルの互換性を維持することを意図しています(公式サイトで共有可能)。それらを超える能力は狙っていません。
GoGo BoardにしてもWeDoにしても、DCモーターの制御しかできませんので、ブロックもそれ用のものしか用意されていません。もし、サーボモーターを使われるのであれば、自分でスケッチを書き、プロトコルを決め、ブロックも用意する必要があります。
それを実際に行なっているのがS4Aです。
http://seaside.citilab.eu/scratch?_s=yQf-lmh7eaq_Ev0_&_k=_Ac121eeMFBO3xsR
Smalltalkの拡張でサーボモーターをお使いになるのであれば、これを参考にすることをお勧めします。
あるいは、リモートセンサープロトコルを使って、サーボモーターを制御するサーバーとScratchがソケットで通信するように書くのも手です。その場合、サーバーの記述言語はSmalltalkで無くても構いません。また、Scratch側の変更が不要となります。
http://wiki.scratch.mit.edu/wiki/Remote_Sensors_Protocol
これを行っているのがCatenaryです。
https://sites.google.com/site/chalkmarrowfiles/
//abee
--
阿部 和広 EMAIL abee @ squeakland.jp
Squeak-ja メーリングリストの案内