始める小学生からのプログラミングスクラッチで始めるロボットプログラミング:サーボモーターでロボットアームみなさま、こんにちは。前回、前々回とDCモーターやフォトリフレクタ、加速度センサーなどをつかって、ライントレース、車の操縦などを取り上げてきました。今回は、DCモーターではなく、サーボモーターを取り上げてみたいと思います。1.サーボモーターとは?サーボモーターとは、フィードバック制御により、モーターの回転などがコントロールできるモーターのことです。(奴隷)といった意味合いの単語からきているようです。要するに、いうことを聞くモーター、といった意味からきているようです。今回使うサーボモーターは、角度を指定するとその指定された角度に回転するというモーターです。主な用途としては、ロボットアームや二足歩行ロボで関節部分の動きを作るところで使われています。今回の記事では、典型的な用途でもあるロボットアームの簡易版を作ってみたいと思います。サーボモーターを使って組み立てるでは、早速サーボモーターを使って組み立てていきましょう。上の図に示すように、青色のブロック5つ、水色のブロック3つ、サーボモーター一つを準備します。次に、右の写真のようにそれぞれブロックを組み上げます。次に、先ほど組み上げたブロックをつなげ、サーボモーターとそのブロックとを上の写真のようにつなげます。コントローラ本体につなげ、サーボモーターのケーブルをD9のコネクタにさします。以上で、接続は終わりです。うごかしてみるそれでは、簡単なプログラムでまずは動きを確認しましょう。次に示すようなプログラムを準備します。今回の動きはつぎのような方針としました。5度動かして止めるボタンを押していないときは、そのまま止まっているここで、右や左に5度動かして止めるとあるのですが、角度を操作の度に記憶しておく必要があります。角度を保持するためにはどうしたらいいでしょう?そうです、変数を使うとできます。2.3.プログラムリスト上記の方針で作る場合、プログラムのリストは次のようになります。A0、A3のボタンを押したかどうかの判定は、ボタンの値が0かそうでないか、で確認しています。ボタン(A0からA3)は、押された時に0、押されていない時に1を示します。「もし◯◯なら」を使って、条件が成り立つ時に右、左と判定しています。秒待つという文を入れています。これを入れないと動きとしては期待通りにならないのですが、なぜだかわかりますでしょうか。プログラミング教室の場合は、宿題にしてしまうのですが、簡単に説明します。「ずっと」とかかれているループ文に待ちがない場合、基盤のクロックの速度で毎回同じ計算をすることになります。(ヘルツ)は、1秒間に1回ということです。M(メガ)は、キロの1000倍になります。回のクロックになります。1クロックあたりの時間、すなわち、1周期は逆数になるので、0.05nsec(ナノ秒)。msec(ミリ秒)必要ということになります。このスピードで動かした場合、人がボタンを指で押している時間と比べて非常に短いため、押しただけで一気に上限の180度もしくは、下限の0度になってしまいます。そのため、待ち時間を入れないとうまく動かないのです。複数のモーターとブロックをくみ上げるでは、次にロボットアームらしく、複数のサーボモーターを使ってみましょう。上に示す図のように、追加で青いブロック4個、緑ブロック11個、サーボモーター2機を用意します。右の写真のように二つ同じ形で組みます。次にサーボモーターにそれぞれつなげます。残っているブロックを上の右の写真のように組みます。サーボモーターの一つにその組み上げた部品を上の写真のようにつなげます。ロボットアームの手の部分になります。次に、先ほど組み上げたモーターを三つつなげていきます。コントローラにつけたモーターともう一つのモーターを図の写真のようにつなげます。一つのサーボモーターを接続します。最後に、真ん中のモーターと最後につけたモーターのケーブルをそれぞれD10、D11に接続して完成です。プログラム先ほど書いたプログラムに追加して、次のようなプログラムを追加します。考え方としては、A1で腕を下に、A2を押した時に掴みに行くという動きになります。度にそうでなければサーボD10の角度を90度にするもしA2が押されたならばサーボD11の角度を50度にそうでなければサーボD11の角度を150度にする実際のプログラムリストは次のようになります。さあ、動かしてみましょう。次のような動きになるはずです。まとめ今回は、サーボモーターを使った簡易なロボットアームのプログラミングを紹介しました。凝った動きをさせようとすると、いろいろ試行錯誤がいることになりますが、基本的な動きや、動かし方は今回の内容で理解できるのではないでしょうか。違った内容で次回書きたいと思います。対象としたプログラミング&ロボット教室を開校しています。コース概要のページで説明しております。創造性や協調性などこれからの時代に必要となる素養を育てるコースです。ご興味ありましたらぜひお問い合わせください。夏休みの企画として、サマースクールを実施します。ここで取り上げているスクラッチやロボットプログラミングを体験できる内容となっています。詳細はこちらでご確認ください。ご参加お待ちしております。授業運営パッケージ弊社で実施している授業を取り入れたい方々向けに提供しています。