MeArm.Joystick Software JP
大元:PhenoptixのPocket Sized Robot Arm.
- このプロジェクトでは2014年12月10日にIndiegogoでクラウドファンディングによる資金集めを開始します。
- 初心者から上級者にまで学びとなる37個のプログラミングレッスンが収録されます。小学生にはS4AまたはArdublockがおすすめです。C言語についてのレッスンもご利用頂けます。プログラミングスキルがない人でも学習し始めることができます。
- ステップA、B、Cを実行し、必要なソフトウェアとドライバーをインストールして下さい。
- ステップDとEを実行し、ドラッグ&ドロップスタイルの言語をインストールして下さい。(S4AまたはArdublock)
- Arduino IDEにmeArm.inoをアップロードすることで、いつでも工場出荷時のデフォルトの状態を復元可能です。
- ご自由なタイミングで一度に全てのレッスンをダウンロードして下さい。(クラウドファンディングの後には「30 lessons.zip」が利用可能となります)
- Restore meArm.Joystickを初期設定状態に戻すには、meArm_bt.ino(Bluetooth利用)またはmeArm.inoをArduino IDEにアップロードして下さい。
A) Arduino IDE
B) 使用するドライバー
Windows:
Arduino_driver.exeをダブルクリック
MAC:
1) ch34xInstall.pkgをダブルクリックして下さい。
2) Yosemite (OSX 10.10) の場合は、ターミナルを開き、以下の指示に従いインプットを行ないます。その後に再起動しましょう。
sudo nvram boot-args="kext-dev-mode=1"
Linux:
CH341SER_LINUX.zipの中にあるreadme.txtの指示に従って下さい。
C) Arduino IDEのセットアップ
Windows:
1) System-Device Manager-Ports (この例ではCH-340はCOM3)
2) "Arduino UNO"を選択して下さい。
3) 適切なポートを選択して下さい。(COM3)
4) プログラマーとして "Arduino as ISP" を選択して下さい。
MAC:
1) Application-Tools-System Info (meArm.Joystickを接続し "USB2.0-Serial"があることを確認)
2) "Arduino UNO"を選択して下さい。
3) "dev/tty.wchusbserial410"を選択して下さい。
4) プログラマーとして"Arduino as ISP"を選択して下さい。
D) S4A
1) S4A.ImageをダウンロードしS4Aインストールフォルダに保存して下さい。
Windows : C:\Program Files\S4A\S4A.Image
MAC : Macintosh HD/Application/S4A/S4A.Image
2) Arduino IDEを開き、S4AFirmware15_meArm.inoをmeArm.Joystickにアップロードして下さい。
E) Ardublock
Arduinoのインストール後には、"ardublock-beta-20140828.jar"を以下にコピーして下さい:
Windows 7 : C:\Users\lienhungcheng\Documents\Arduino\tools\ArduBlockTool\tool\ardublock-beta-20140828.jar
Windows XP : C:\Program Files\Arduino\tools\ArduBlockTool\tool\ardublock-beta-20140828.jar
MAC: /Users/lienhungcheng/Documents/Arduino/tools/ArduBlockTool/tool/ardublock-beta-20140828.jar
("lienhungcheng"をあなたのユーザー名に変えて下さい)
F) 説明書 : meArmJoystick-en.pdf
光をオンにする
meArm.JoystickのコントロールにC/S4A/Ardublockを使用することができます。
A) S4A
(1) S4Aアプリケーションを開いて下さい。
(2) ブロックとしてドラッグ&ドロップします。
(3) "Green Flag"をクリックすると、ボットのLEDがオンになります。
B) Ardublock
(1) Tools/Ardublockを選択します。
(2) ブロックとしてドラッグ&ドロップします。
(3) "Upload to Arduino"を押して下さい。
C) C
(1) _01.inoを開いて下さい。
(2) "Upload"を押して下さい。
補足:LEDのピンは「3」です。(S4Aは「12」) 値がこれより大きい場合には、ライトがオンになります。S4A内の".sb"、 Ardublock内の".abp"、 Arduino IDE内の".ino"を開いても、同じ結果が得られます。
3秒後にライトをオフにする
オフにするためには、ピンを3000ミリ秒の遅れの後に"LOW"または"OFF"に設定するだけで結構です。
点灯に挑戦
LEDのオンとオフの操作が可能です。せっかくなので点灯にも挑戦しましょう。1秒毎に点灯させてみて下さい。
変数
例えば、点灯の頻度を1秒に1回から0.2秒に1回に変更する場合を考えてみましょう。遅れをたくさん設定する必要が生じます。そんな時には、変数が便利です。思い通りの操作をする時には変数を一度変えるだけでいいのです。
変数(続き)
変数の存在を学びました。変数は「動かされる」ためにあるのです。それでは「足し算/引き算/かけ算/割り算」をやってみましょう。
変数をプリントする
変数はとても便利です。これの力を最大限に活用しましょう。以下の説明に従うことで、プリント操作が行なえます。
もし…であるならば
"If(もし)"は、私たちの生活のあらゆる場面で幅広く利用されます。例えば、もし雨が降ったら、傘を持って出かけます。もし風が強いなら、コートを着用するでしょう。そのように、ある条件が満たされた場合に、規定の行動を実行する仕組みです。
"もし10が1よりも大きいのならば、LEDをオンにする"
この場合、10は1よりも大きいのでLEDが光ります。
If + 変数
ふつう、変数とIfはセットで組み合わせて使います。このレッスンでは、 "light"という変数は、センサーから獲得される現在の値となります。
"Boolean"は"If"の友達
前回のレッスンでは、もし"(light < 10)”なら、これを"True"と呼びました。そうでない場合は"False"です。
TrueとFalseはともにBooleanです。Booleanの値がTrueならば、特定のアクションが実行され、Falseならば他が選択されます。
左回りまたは右回り(if-else)
Booleanの値には2つの種類があるので、記述は通常"if-else"のようになります。
左回りまたは右回り(if-else)の続き1
"if-else"の記述はよく変数と併用されます。
例えば「もし変数が3で割り切れる場合…」などです。
("|"はモジュロ)
左回りまたは右回り(if-else)の続き2
"if-else"はとても大事なので、もう少し練習をしてみましょう。
“奇数であるなら、LEDを1回点滅させる。そうでなければ2回点滅”という指令はどのように出したらいいでしょうか?
Loop ─ 単調な繰り返しを自動化
"if-else"に加えて、パソコンが私たちのためにやってくれる、素敵な仕事が"loop"です。これのおかげで単調な繰り返しを自動化することができます。
例えばLEDを5回点滅させてみましょう。
C言語における基本フォーマット
Loopを使って1から100まで増加
loopで1から100まで増加させる方法を見てみましょう。
Loopに使用するのは偶数のみ
"Loop"はとても強力なツールです。1から100の偶数を扱ってみましょう。
Loopにおける"Step"
loopにおけるstepとは、何周毎にアクションを行なうかという意味です。
stepを2にすることで、偶数のみを数えることができます。
"Step"を使って1年に月曜日が何回あるか確認
このクイズの鍵は"Step"の値の設定にあります。
Loop(続き)何かを永遠に繰り返す
Loopの記述は多くのプログラミング言語にとって非常に重要です。そして、これに関連した重要な要素として"while"があります。"while"を記述する上で鍵となる考え方は「条件が満たされる限り、ある動作が永遠に続く」です。
Loop(続き)基本的なかたち
システムを停止させないために、通常whileのループの中には条件を追加します。ですので、条件がFalseになった場合には、whileのループは終了となります。
LEDを永遠に点滅させる
何かを変更せずに繰り返し実行するためには、whileのループが最高の手段です。このレッスンでは、LEDを永遠に点滅させる方法を学びましょう。
記述をまとめるFunctionの機能
コードを整理し、まとめて記述を行なうために、プログラマーは"Function"を使用します。その記述のまとまりこそが、いわゆる"Function"や"Subroutine"です。このレッスンでは、Functionの使用方法を学びます。
補足:Only Arduino CとArdublockのみが"Function"に対応しています。S4Aはこれに対応していません。
Function + Loop でLEDを10回点滅させる
複数の記述内容をFunctionとして一つにまとめた後、このFunction自体を記述として扱うことができます。つまり、Functionをループ内に使用することが可能なのです。FunctionとloopでLEDを10回点滅させる方法を学びましょう。
Function内でのloop
loop内でFunctionを実行するだけでなく、Function内でloopを扱うことも可能です。
Functionのパラメータ(C言語のみに対応 *Ardublockは非対応)
"Function"はとても強力です。例えば、Functionの実行時に、パラメータを設定することができます。この例では、Functionにパラメータを提供し、LEDをX回点滅させてみましょう。
複数のパラメータをFunctionに使用することは可能?
Functionにパラメータを渡すだけでなく、2つのパラメータを対象とすることが可能です。一つが点滅の時間で、もう一方がその頻度です。
より複雑な工程に挑戦
パラメータつきのFunctionは非常に強力です。それでは、Functionについて、1から数字yまで足すことができるか挑戦してみましょう。 1から100まで足す場合には、"Sum(100)"の利用が便利です。
サーボの概観
このレッスンでは、meArm.Joystickのコントロール方法を学びます。ここまでのレッスンをクリアしてきたあなたなら、ボットの操作をすぐに理解できるはずです。
メカニックアームは4つのサーボにより動きます。私たちがすべきは、ピン番号とサーボの角度の設定のみです。残りはArduinoがやってくれます。角度は1〜179です。これの範囲外にまでサーボを曲げないように気をつけて下さい。システムとサーボの故障の原因となってしまいます。さらにネジを強く締めすぎないように細心の注意を払って下さい。これのせいでサーボが特定の角度に曲がることができない場合には、システムの不具合に繋がってしまう危険性があります。
サーボをゆっくりと1から179の角度まで回転
1から179の角度までサーボをゆっくりと回転させる様子の画像
サーボの回転可能な範囲は1~179です。「1」づつ回転させてみましょう。
二つ目のサーボで45〜145に挑戦
二つ目のサーボで45〜145に挑戦の様子の画像
二つ目のサーボはmeArm.Joystickを前や後ろに動かすためにあります。45〜145°まで回転させてみましょう。
三つ目のサーボで90〜179°に挑戦
三つ目のサーボで90〜179°に挑戦の様子の画像
三つ目のサーボは上下の方向を操作するために存在します。90〜179°まで回転させてみましょう。
四つ目のサーボで0〜50°に挑戦
四つ目のサーボで0〜50°に挑戦の様子の画像
四つ目のサーボはクロウを操作するためのものです。1〜50°まで回転させてみましょう。
ジョイスティックの値を読む
「ジョイスティックの値を読む」の画像
二本のジョイスティックがあり、それぞれは二つの向き(左右、前後)へ動かすことができます。なので、4つの方向アナログピンA0, A1, A2, A3で管理することにします。各アナログピンの値は0〜1023です。今回のレッスンでは、A0ピンの値を読み、シリアルポートからプリントします。
0~1023の値を三つに分ける
「0~1023の値を三つに分ける」の画像
これの目的は、ユーザーによるジョイスティックの操作を検知することにあります。値が612よりも大きい場合には、"bigger"、412よりも小さい場合には、"smaller"、そうでなければ"middle"と表示します。
ジョイスティックとサーボの組み合わせ
「ジョイスティックとサーボの組み合わせ」の画像
ジョイスティックの方向に基づきサーボの角度を増やしたり減らしたりすることで、ジョイスティックとサーボを組み合わせてみましょう。
Array─類似したものを集める
「Array─類似したものを集める」の画像
四本のジョイスティックから値を読み、4つのサーボの角度を操作しているので、Arrayを使って、似通った値を"Array"変数に格納することができます。これでコードがよりすっきりとまとまります。
全てをまとめるとボットが思い通りに動く
「全てをまとめるとボットが思い通りに動く」の画像
ボットを操作するには、ここまでのレッスンで学んだ全てのスキルを駆使する必要があります。コードの全てをここで扱うことはできません。コードについてさらに勉強を進めてみて下さい。すぐに理解できるはずです。
自動モード
「自動モード」の画像
既にサーボをコントロールする方法を学んだので、予め各サーボの角度を設定することで、ボットを自動で動かしてみましょう。
初期設定の復元
「初期設定の復元」の画像
meArm.inoをArduino IDEにアップロードすればいつでも初期設定を復元することができます。何か不具合が見られる場合には、"Lien Ted"をFacebookから探してお問い合わせください。メールアドレスはこちらです:ted99.tw@gmail.com。また、joyarm.weebly.comのフォーラムもご活用下さい。