こんにちは。プログラミング クラブ ネットワーク : PCN の 原です。

夏休みも中盤に入った頃ですね。テーマ選びに悩むことも多い自由研究ですが、これを見てくれている人はIchigoJam・paprikaの研究に取り組んでいることと思います。順調に進んでいますか?

知らないことを学ぶ時は、どうしても分からないことが出てきます。今回は、そんな時のお助け情報をいくつかお伝えしますね。

○IchigoJam・paprikaをより深く知るために

自由研究のヒントも含めて、一冊あるといいのが本ですね。電子工作系の話と一緒に書いてあるものもあって、自分に合いそうな本を探すと楽しく進められます。最寄りの図書館の司書さんに聞いてみるのも良さそうです。

・IchigoJam関連書籍(Amazonの例)

この命令の意味を知りたい、などピンポイントの情報が欲しい時には、こちらをどうぞ。ちょっと難しい表現もありますが例を動かしてみると、理解が早まるかと思います。

・IchigoJam BASIC リファレンス

それでもわからない時には、お店やコミュニティに聞いてみましょう。東京の秋葉原や、大阪の日本橋などには取り扱いショップも多くあります。近くにお店がない場合には、コミュニティ(Facebookグループ)の人たちに、大人の人に代わりに聞いてもらうといいでしょう。

・PCN秋葉原
・IchigoJam-FAM on Facebook

うまく情報を集めて、作りたいプログラム・工作を仕上げましょう。

○完成したpaprikaを確認

前回、ついに完成したMy paprika。素敵に動いていますか?

paprikaは、特徴的なボディに次の機能が内蔵されたロボットです。

・ウデ:サーボモーターがついているウデは、前に後ろにと振り出す事ができます。かつ、動かすだけじゃなく、指定された角度を維持することもできます(これは、サーボの魅力)

・足回り:キャタピラで作られた足は、前後だけじゃなく、右旋回、左旋回することが出来ます。ちょっとしたデコボコは、乗り越えられちゃいますよ。

・コンピューター:IchigoJamが背中に乗っていますので、IchigoJam BASICを活用して、いろんな動きをさせることが出来ますよ。

今回は、paprikaをよりロボット的に動かしてみましょう。

○自動起動で動かそう

ここまで触ってきて、paprika の扱いにもなれてきたのではないでしょうか? でも、今のままの状態では、たくさんの線につながれて、なんとなく可愛そうな感じ。IchigoJamの自動起動という機能を使って、キーボードとディスプレイを「外した」状態で、paprika単体で動かしてみましょう!

まずはプログラムを入力します。シンプルに「前、後ろ、前、後ろ、右手を振って。止まる」という内容です。

「FOR A,1 TO 2」 の部分は 「FOR A=1 TO 2」 と書いても大丈夫(LETの書式に合わせてかいてあります)。詳細は割愛しますが、IchigoJam BASICではAとかXなどの英語1文字を変数(数字の入れ物)として使えます。同じ動きを繰り返すFOR文という命令の中で使っています(最初、変数Aに1を入れて、前後に動いてNEXTまでいったら、FORに戻って変数Aの中身を1つ増やす。これを、変数Aの中身が2になるまで繰り返します)。

入力が終わったら、RUNする前に、まずSAVEです。大事なポイントは「SAVE 0」で、0番目として保存すること。IchigoJamは0〜3番まで4個保存が可能なのですが、0番として保存すると良いことがあります(もし0番目に大事なプログラムが保存してあったら、事前に退避してください)。

そして、RUNして、思うように動くか確認してみます。楽しく動いていれば大丈夫!

さて、ここからが自動起動の出番です。SAVE 0もRUNして動作確認も終わったら、IchigoJamの電源をOFFにして、キーボードとディスプレイ用ケーブルを外します。そして動いても大丈夫な場所に、paprikaを移動させましょう。これで準備OKです。

ポイントは、IchigoJamの電源をONする時に、IchigoJam上にあるボタンを押しながら、電源スイッチをONにスライドする点です。すると……先程 SAVE 0 したプログラムが自動で動作を初めて、paprikaが動き出します。

この方法を使うと、キーボードやディスプレイなしで、いつでもpaprikaを動作させることができます。

○paprikaのダンス

もう少し、楽しく動かしてみましょう。動くといえば、ダンス?、ということで、音楽をつけて動かします。さて、音楽ってどうやって鳴らすんでしょうか?

IchigoJamには、スピーカーを取り付けられることを覚えていますか?上に MapleSyrupが乗っかっていても、スピーカーは使えます。同じ端子がついているので、同じ方法で取り付けが可能です (連載 第5回の「音を鳴らそう」も参考に)。

IchigoJamの電源ON時 or BEEP 5 とか打ち込んでenter/return して、音が鳴ればOKです。

今回は、三三七拍子に合わせてダンスするプログラムを用意しました。BEEPコマンドで音を鳴らしながら、paprikaが動きますよ。

先程のプログラムと同じで 「FOR A,1 TO 3」は 「FOR A=1 TO 3」 と書いても同じ動きをします。今までに無かったのは、「’」(シングルクォート)で始まるコメント行です。これは、プログラムを作っている人が情報を好きに書ける場所です。IchigoJamはコメント行の部分は無視してくれるので、長いプログラムを書く時に、何の処理なのか分かるようにメモしておきます。今回は、全体で5つの動きをさせているので、各始まりにコメントを入れておきました(ちなみに、入力しなくても動作は同じです)。

黄色い枠の部分では、右旋回をスタートした後、「音を鳴らしてWAIT30で待つ」を、FOR文を使って3回繰り返します。BEEP命令は、連続で命令しても音がなり終わってないと聞こえませんので、右旋回の待ちと合わせて細切れにしました。最後25行目で、一旦動きを停止させて次に備えます。

緑の枠の部分では、左ウデを動かすPWM 3, X 命令の X に、FOR文で変数Cの値を-20(マイナス 20)ずつ変化させた値を渡すことで、左ウデを後ろから前に小刻みに動かしています。

うまく動かせましたか? WAITの数値を調整する、もしくはFOR文の中の数字を変えてみて、どのように制御されているか、自分なりに試行錯誤してみましょう。

○改造のヒント

もっと paprika を改造したいという方にヒントをいくつか、教えちゃいます。

IchigoJamで、まだ使っていない機能を探してみると、LEDとボタンがあります。最初に取り組んだプログラム「Lチカ」を思い出して、LEDを光らせるのも手ですね。

また、ボタンは、BTN() という命令で状態(押されてる、押されていない)が取得できます。これを使うと、ボタンを押したら停止、みたいなこともできちゃいますよ。

MapleSyrupをのせて、サーボモーター(ウデ)×2つ、キャタピラのモーター(足)×2つを制御すると、IchigoJamが標準で使えるOUT ポート 6つ(1から6)をすべて使い切ってしまうので、青色LEDなどを追加することは残念ながらできません。

しかし、IchigoJamが標準で使えるINポート4つ(1から4。内2はアナログ対応)は、まだ空いています。これは使えます。例えば、タクトスイッチという電子パーツを2つ買ってきて、ジャンパワイヤーという線でIN3, IN4につなぎます。この値をつかって、IN3のタクトスイッチを押したら左に進み、IN4のタクトスイッチを押したら右に進むなんていう動作も作れそうです。また、アナログ対応しているIN2に、距離センサーというものをつなげ、paprikaの前方につけると、壁にぶつかりそうになったら、後退して方向を変えるなんて動作も作れそうです。

少し電子工作の知識も必要になってきますが、数十円から数百円で変えるパーツが豊富にあるので、お店の店員さんなどに相談して、チャレンジしてみてください。

○挑戦してみよう

今回作った paprika プログラム 三三七拍子のダンス を、 四四八拍子のダンスに変更してみましょう。数字をつ変える もしくは 記号をつ変えるなど、いくつか実現方法がありますよ。

○まとめ

・移動を止めたい時の命令は OUT 0。「F7」キーを押しても止まります。

・動作が終わるまで、少しWAIT命令で待ちを入れると、思うように動かせます。

・右ウデを動かす命令は、PMW4,X。左ウデを動かす命令は、PWM3,X。Xの数字の意味が左右反転するので注意

・paprikaを移動させる命令は OUT。前がOUT33, 後ろが OUT18。他は取扱説明書で確認を。

・paprikaもIchigoJamと同じように、スピーカーなどをつけて拡張できます。

○挑戦してみよう(前回の答え)

Paprikaのボディ、素敵なデコレーションはできましたか?

著者紹介
原 秀一(はら ひでかず)
サーバー・ネットワークが得意なWebシステム系のITプロフェッショナル。福井工業高等専門学校 電子情報工学科、福井大学 情報工学科を卒業。学生時代はプログラミングから逃げ腰だったが、クラウド時代になり35歳から本格的にプログラミングを再開。IchigoJam等を用いたプログラミングを広める団体PCN(プログラミング クラブ ネットワーク)を友人と共に主宰し、主にアフリカ担当としても活動中。