micro:bitでおもちゃを動かす 2
投稿者:マーチン 2019年9月23日
カテゴリ:障碍者全般::micro:bit
カテゴリ:障碍者全般::micro:bit
micro:bit でサーボモータを動かすサンプルを、3通り作ってみました。ボタンA、Bを使うのではなく、外付けのプッシュボタン2個でモータを制御することを考えます。まずは、ブレイクアウトボードとブレッドボードを使って、動作確認をしています。モータ用に別電源を用意する必要があります。
●サーボモータとは
サーボモータとは、位置や速度を制御できるモータのことです。micro:bit や Arduino でよく使われている小型のモータに以下のものがあります。
【Amazon】デジタル・マイクロサーボ SG90
【TowerPro】SG90 Analog
SG90は以下の波形で0.5msで0度、2.4msで180度になるという仕様です。MakeCodeでプログラミングする時には、これを意識する必要はありません。・重量:9g
・外形寸法:22.2x11.8x31mm
・トルク:1.8kgf・cm(4.8V)
・動作速度:0.1秒/60度
・動作電圧:4.8V(~5V) ← 3V では電圧不足
・温度範囲:0℃~55℃
・制御角:±約90度(180度)
・配線:茶=GND、赤=電源[+]、橙=制御信号 [JRタイプ]
・PWMサイクル:20ms
・制御パルス:0.5ms~2.4ms
・外形寸法:22.2x11.8x31mm
・トルク:1.8kgf・cm(4.8V)
・動作速度:0.1秒/60度
・動作電圧:4.8V(~5V) ← 3V では電圧不足
・温度範囲:0℃~55℃
・制御角:±約90度(180度)
・配線:茶=GND、赤=電源[+]、橙=制御信号 [JRタイプ]
・PWMサイクル:20ms
・制御パルス:0.5ms~2.4ms
【TowerPro】SG90 Analog
●ブレイクアウトボード
micro:bit のテストプログラムを作成するには、ブレイクアウトボードを使うと便利です。いろいろなタイプのものがありますが、ブレッドボードに挿して使うタイプの、次のものを選択しました。
電池3本の電池ボックスから、黒:GND と赤:電源(4.5V)とを、ブレッドボードの-と+に挿し、モーターから茶:GND、赤:電源、黄:信号の3本の線が出ているので、短いオス-オスのジャンパーワイヤーで、ブレッドボードの-と+とP0に挿します。-とブレイクアウトボードのGNDをジャンパーワイヤー(青)で結びます。
モータを別電源にしなくても、電池2本でPHコネクタを介して供給すれば、電池が新品のうちは動きました。でも、電池が消耗して電圧が下がると動かなくなります。
プッシュボタンは、オス-オスのジャンパーワイヤーを半分に切って、切った端をオーディオジャックにはんだ付けして、GNDとP1、GNDとP2に挿します。
モータが1個、プッシュボタンが2個の場合の全体の構成は、この記事の最初の写真になります。
電池3本の電池ボックスから、黒:GND と赤:電源(4.5V)とを、ブレッドボードの-と+に挿し、モーターから茶:GND、赤:電源、黄:信号の3本の線が出ているので、短いオス-オスのジャンパーワイヤーで、ブレッドボードの-と+とP0に挿します。-とブレイクアウトボードのGNDをジャンパーワイヤー(青)で結びます。
モータを別電源にしなくても、電池2本でPHコネクタを介して供給すれば、電池が新品のうちは動きました。でも、電池が消耗して電圧が下がると動かなくなります。
プッシュボタンは、オス-オスのジャンパーワイヤーを半分に切って、切った端をオーディオジャックにはんだ付けして、GNDとP1、GNDとP2に挿します。
モータが1個、プッシュボタンが2個の場合の全体の構成は、この記事の最初の写真になります。
●サンプル1:角度を増減させる
モータをP0、プッシュボタンをP1とP2 に接続し、P1のボタンを押すと 時計回りに30度、P2のボタンを押すと 反時計回りに30度回転させるサンプルです。
角度は、0度~180度までしか回らないので、それ以上の値を指定しないようなプログラムになっています。イベント処理(タッチされた時)を実行するには、メインのループ内に一時停止が必要です。
変数は、以下の2個です。
角度は、0度~180度までしか回らないので、それ以上の値を指定しないようなプログラムになっています。イベント処理(タッチされた時)を実行するには、メインのループ内に一時停止が必要です。
変数は、以下の2個です。
●サンプル2:3つのポジションを選択する
モータをP0、プッシュボタンをP1とP2 に接続し、P1のボタンを押すと下を、P2のボタンを押すと上を、両方同時に押すと右を指すようなサンプルです。
で紹介したタッチボードを作成してじゃんけんの入力と、グー・チョキ・パーを書いた紙をモータの矢印が指し示すようにすれば、じゃんけんゲームができそうです。
P1タッチ、P2タッチのフラグを"偽"にする → アイコン表示 → 一時停止 の順番がミソです。
変数は、以下の2個です。
で紹介したタッチボードを作成してじゃんけんの入力と、グー・チョキ・パーを書いた紙をモータの矢印が指し示すようにすれば、じゃんけんゲームができそうです。
P1タッチ、P2タッチのフラグを"偽"にする → アイコン表示 → 一時停止 の順番がミソです。
変数は、以下の2個です。
●サンプル3:ボタンを押している間2つのモータを動かす
モータをP0 と P14に、プッシュボタンをP1とP2 に接続し、P1のボタンを押している間はモータ1が一杯に振れボタンを離すと元に戻り、P2のボタンを押している間はモータ2が一杯に振れボタンを離すと元に戻るサンプルです。旗揚げゲームみたいなものができそうです。
前の2つのサンプルと違って、イベント処理を使わずに、単純にタッチされていれば上、されていなければ下に移動させています。
変数は、以下の4個です。
前の2つのサンプルと違って、イベント処理を使わずに、単純にタッチされていれば上、されていなければ下に移動させています。
変数は、以下の4個です。
●micro:bit の電源供給
●モータ用電源
モータに別電源から供給する方法として、別売りの基板を使うのが最も簡単です。
micro:bit用に乾電池2本と、モータ用に乾電池3本が必要です。
あるいは、
では、4.8V(充電式ニッケル水素電池4本)からモータに電源供給をして、そこから3.3Vの電圧を作り、micro:bit を駆動する方法が紹介されています。
または、こんな製品もあります。
【Amazon】micro:bit用 Servo:Lite
・単4電池3本で3.3 Vのサーボモータを三つまで制御できる、BBC micro:bit用の拡張ボードです。
・5本のねじでmicro:bitのエッジコネクタに直接取り付けます。
【kitronik】Getting Started With The Servo:Lite Board
Servo:Lite と microbit のピン割り当て
モーターを2個繋ぐと、スイッチに割り当てるピンが1個しかないので、使わないだろうな。
・単4電池3本で3.3 Vのサーボモータを三つまで制御できる、BBC micro:bit用の拡張ボードです。
・5本のねじでmicro:bitのエッジコネクタに直接取り付けます。
【kitronik】Getting Started With The Servo:Lite Board
Servo:Lite と microbit のピン割り当て
microbit | Servo:Lite. |
---|---|
Pin 0. | ZIP LEDS. |
Pin 1. | Servo 1. |
Pin 2. | Servo 2. |
●プログラミングのダウンロード
【まほろば】micro:bit プログラムのダウンロード サーボモーター サンプル
◆連載
- 【まほろば】micro:bitでおもちゃを動かす 1
- 【まほろば】micro:bitでおもちゃを動かす 2
- 【まほろば】micro:bitでおもちゃを動かす 3