BLOG

2018.02.26micro:bitで始める小学生からのプログラミング

小学生から始めるmicro:bit:サーボモータを使ってみる

サーボモータプログラム1

皆様、こんにちは。前回の記事では、加速度センサで遊んで見るということで、加速度センサを使ったプログラムをいくつか作ってみました。今回は、もう少しアクションを作るイメージで、サーボモータを使ってみることにしましょう。


サーボモータとは?


これは以前別の記事で書いたことがありますが、サーボモータとはモータの回転などがコントロールできるモータのことです。語源としては、ラテン語のservus (奴隷、英語で言うservant)という言葉からきており、言うことを聞くモータという意味合いで使っているようです。うごかす場合には、コントローラ側から回す位置などの司令を送ると、サーボモータはその位置に合わせるようにモータの回転をフィードバックしながら合わせる動きをします。フィードバックという言葉が難しいですが、簡単に言うと、やった後に評価して、評価結果を使ってもう一度補正をすることを繰り返すということです。


難しいことはさておき、今回はこのサーボモータを使ったプログラムを作ってみましょう。サーボモータには色々種類がありますが、電子工作でよく用いられていて、比較的価格が手頃なSG90 というサーボモータを使います。購入される場合は、SG90で検索するといろいろなサイトで見られるはずです。


マイクロビットでのサーボモータの操作


サーボモータ用の命令


マイクロビットではサーボモータをどうやってうごかすのでしょうか?「入出力端子」というカテゴリが高度なブロックのところにあります。「サーボ出力する」と書かれているブロックがサーボモータに対して角度を指定するためのブロックです。角度は具体的な数値(0°から180°)を与えます。ここでは、動きを確認するために、Aを押したときに0°、Bを押したときに180°の向きに回るプログラムを書いてみましょう。図のようなプログラムを用意して、実際に書き込んで動かしてみます。


サーボモータプログラム1


配線


うごかすときには写真のような形で配線します。SG90の配線は茶色がGND(ぐらんど)、赤色がVDD(3V)、黄色が制御信号(ピン0)になります。図のようにミノムシクリップとオス−オスのジャンパケーブルを用意して、接続してみましょう。接続したら実際に動かしてみます。うごかすときには、他のものと同様にUSBケーブルを接続し、書き込みが終了したあとにケーブルを外します。その後外付けの電池を接続します。USBケーブルから給電されてくる電源ではサーボモータが動きません。電圧は3V出ますが、おそらく電流が足りないものと思われます。電池を使うことで動くことが確認できます。ただし、私が最初試したときは、若干使い古しのアルカリ乾電池を使っていたのですが、電圧が2.5Vぐらいしか出ていなかったため、マイクロビット本体は起動してもサーボモータは動作しませんでした。動かないときは電源を確認されるとよいと思います。さて、実際動かしてみるとボタンを押すとギュインギュイン反応することがい見て取れます。これでとりあえず動きは確認しました。


5度ずつ向きを変える


今度は、ボタンを押すと少しずつモータの向きが変わるようにプログラムをつくってみましょう。少しずつうごかすために、今向いている角度を変数として用意します。そして、ボタンを押すと5°ずつ右か左に向きを変えていくようにしてみます。ボタンを押したときに5°増やすか減らすかをして、その角度の数値にサーボ出力をするというプログラムを書きます。注意点としては、ボタンを押すたびに数値が変化するので、おしすぎると数が0よりも小さくなる、180よりも大きくなってしまうことが考えられます。それを防ぐために、0よりも小さい値になりそうになったら0のままにするように、引き算の結果と0とくらべて大きい方を変数に書き込む処理を書きます。これと同様に、足し算の結果と180とを比べて小さい方を変数に書き込む処理を書きます。こうすることで、0より小さい値、180より大きい値にはならなくなります。では、図のようなプログラムを書いてみましょう。


5度ずつ向きを変える


加速度センサで動かす


次に、前回使った加速度センサを使い、傾きでサーボモータをうごかすようにしてみましょう。先程使った「サーボ出力する」というブロックを使いますが、加速度センサの値を角度に変換して与えるようにプログラムを書きます。これをするのに便利なブロックが、「数値をマップする」というブロックです。マップするというのは、とある数値から何らかの変換規則を使って、別のとある数値に変換することをいいます。高校の数学で言う「写像 (英語で言うとmap)」ですね。「小学生から」と銘打って書いている以上、あまり難しいことには触れないでおきつつ、ここで使える機能について書きます。設定する値は5種類ありまして、最初の値は変換をしたいデータ、「元の下限」、「元の上限」と書いてあるのは、変換をしたいデータの数値の一番小さい値と一番大きい値、「結果の下限」、「結果の上限」と書いてあるのは、変換した後の一番小さい値と、一番大きい値です。このブロックを使うと、変換前と変換後の下限と上限を設定してあげることで、その下限と上限の間で数値が比例するように(同じ割合で増減するように)直してくれるということです。(比例は6年生で習うようですね。ホッ。)ここでは、加速度Xの数値を変換して角度の0°から180°になおしてみましょう。図のようなプログラムを用意して書き込んでみてください。ボードを傾けるとサーボモータがギュインギュイン動くのが見られると思います。


加速度センサで向きを変える



まとめ


今回はサーボモータを使ってプログラムを書いてみました。色々遊べそうですので、ぜひサーボモータ使って何かおもしろい機械を考えてみてください。

]]>

INFORMATION無料体験会・ワークショップ・ご案内

     

春の無料体験会

無料体験会を実施します。ぜひ一度ご体験ください!

プログラミング&ロボット教室 授業運営パッケージ

弊社で実施している授業を取り入れたい方々向けに提供しています。