エッジコネクタを介してmicro:bitで入出力を扱う方法を紹介します。I/Oピンは、アナログ、デジタル、I2C、SPI、UARTで動作させることができます。また、一部のI/Oピンはタッチセンシティブなアプリケーションを構築するために特化されています。micro:bitは、基本的なユーザーのために、エッジコネクタから3つのI/Oピンのみに丸穴を設けてます。I/Oピンのフルセットにアクセスしたい場合は、エッジコネクタのブレークアウトを使用します。
1.エッジコネクタの使用
(1) 目的
0,1,2,3V,GNDを外部部品に接続したい。
(2) 方法
外部コンポーネント(または回路)をワニグチクリップ(アリゲーター/クロコダイルクリップと呼ばれることもあります)でmicro:bitに接続します。
(3) 解説
micro:bitは、図1の下側に示すように、エッジコネクタを介してI/Oピンを露出しています。エッジコネクタは、大と小の接続パッドで構成されています。大きい接続パッドはGPIOピン0,1,2のみを露出させます。それとは別に、センサ、アクチュエータ、外部回路の電源供給に使用できる 3V と GND パッドがあります。
これらのワニグチクリップは、安価で使いやすく、エッジコネクタで接続するための余分なスキルを必要としません。様々な電子部品販業者からこれらのケーブルを購入することができます。
- SparkFun (https://www.sparkfun.com/products/12978)
これらのクリップは非常に不安定で、接続がはずれたり、エッジコネクタの他のピンと接触したりして、プロセッサのショートや過熱の原因となることがあります。
2.エッジコネクタのブレークアウトの使用
(1) 目的
エッジコネクタの小さなパッドに外部回路を接続したい。
(2) 方法
マイクロビットをキトロニックのエッジコネクタブレークアウトに挿入する方法を示します。エッジ・コネクタ・ブレークアウトのスロットにしっかりと挿入してください。
(3) 解説
ワニグチクリップは、エッジコネクタの小さなパッドで接続するために使用することはできません。解決策として、エッジコネクタのブレークアウトを使用して、21個のI/Oピンすべてにアクセスすることができます。通常、エッジコネクタのブレークアウトはmicro:bitエッジコネクタをピンヘッダの列に接続します。以下にメーカーとベンダーのリストを示します。
- Kitronik (https://www.kitronik.co.uk/5601b-edge- connector-breakout-board-for-bbc-microbit-pre-built.html)
- https://www.switch-science.com/catalog/3181/
3.組み込みボタン(AボタンとBボタン)の使用
(1) 目的
AボタンとBボタンを押して、可能なすべての組み合わせで異なる画像を表示したい。
(2) 方法
- ツールボックスで、変数カテゴリをクリックし、変数を追加するボタンをクリックします。
- 作成する変数の名前モーダルボックス(ウィンドウ)で、ダブルクォーテーションマークなしで”a“と入力します。そして、Okボタンをクリックして変数を作成します。
- 上記の手順を繰り返して、さらに2つの変数”b“と”ab“(二重引用符なし)を作成します。
- ツールボックスで、変数カテゴリをクリックします。そして、変数abを0にするブロックをクリックしてドラッグして、最初だけブロックの内側に配置します。その後、ドロップダウンリストから変数”a“を選択します。
- ツールボックスで、画像カテゴリをクリックします。そして、アイコンの画像ブロックをクリックしてドラッグし、変数aを0にするの中に配置します。その後、ドロップダウンリストからハートアイコンを選択します。
- 上記の2つのステップを繰り返して、変数”b“と”ab“のブロックを追加して設定します。また、小さいハートとチェックマークのアイコンを選択します。
- ツールボックスで、入力カテゴリをクリックして、ボタンAが押されたときブロックを選択します。
- ツールボックスで、画像カテゴリをクリックします。次に、画像を0ドットずらして表示ブロックをクリックしてドラッグし、ボタンAが押されたときブロックの中に配置します。そのあとに、デフォルトで選択されていない場合は、ドロップダウンリストから変数”a“を選択します。
- ボタンBが押されたときとボタンABが押されたときは、上記の2つのステップを繰り返します。
Javascriptで書くと、以下の通りです。
input.onButtonPressed(Button.A, function on_button_pressed_a() { a.showImage(0) }) input.onButtonPressed(Button.AB, function on_button_pressed_ab() { ab.showImage(0) }) input.onButtonPressed(Button.B, function on_button_pressed_b() { b.showImage(0) }) let ab : Image = null let b : Image = null let a : Image = null a = images.iconImage(IconNames.Heart) b = images.iconImage(IconNames.SmallHeart) ab = images.iconImage(IconNames.Yes)
Pythonで書くと、以下の通りです。
def on_button_pressed_a(): a.show_image(0) input.on_button_pressed(Button.A, on_button_pressed_a) def on_button_pressed_ab(): ab.show_image(0) input.on_button_pressed(Button.AB, on_button_pressed_ab) def on_button_pressed_b(): b.show_image(0) input.on_button_pressed(Button.B, on_button_pressed_b) ab: Image = None b: Image = None a: Image = None a = images.icon_image(IconNames.HEART) b = images.icon_image(IconNames.SMALL_HEART) ab = images.icon_image(IconNames.YES)
(3) 解説
マイクロビットの前面には、AとBのラベルが貼られた2つの押しボタンがあります。
ボタンAは内部的にデジタルピン5に接続され、ボタンBは内部的にデジタルピン11に接続されています。MakeCodeは、これらのボタンが押されたことを検出するための3つのイベントハンドラを提供します。それらは以下の通りです。
- ボタンAが押されたとき
- ボタンBが押されたとき
- ボタンA+Bが押されたとき(両方のボタンを一緒に押してください)
これらのイベントハンドラは、プログラムの実行中にコードの一部をトリガーすることができます。変数aはボタンAのアイコン画像を保持し、変数bはボタンBのアイコン画像を保持します。
4.外部入力端子の使用
(1) 目的
外部入力端子(P0~P3)をタッチしたという情報を読み込ませたい。
(2) 方法
P0端子を左手で触り、GND端子を右手で触ります。
- ツールボックスで、入力カテゴリをクリックして、端子P0がタッチされたときブロックを選択します。
- まだ端子P0が選択されていない場合は、ドロップダウンリストからP0を選択します。
- ツールボックスで基本をクリックしてから、アイコンを表示ブロックをクリックしてドラッグし、端子P0がタッチされたときブロックの内側に配置します。
Javascriptで書くと、以下の通りです。
input.onPinPressed(TouchPin.P0, function on_pin_pressed_p0() { basic.showIcon(IconNames.Heart) })
Pythonで書くと、以下の通りです。
def on_pin_pressed_p0(): basic.show_icon(IconNames.HEART) input.on_pin_pressed(TouchPin.P0, on_pin_pressed_p0)
(3) どのように機能するか
MakeCodeでは、micro:bitピン0,1,2を使用して外部ボタンと接続し、端子P0がタッチされたときブロックを使用して入力を読み取ることができます。これらのピンは、それぞれP0、P1、P2と表示されています。これらのピンは、micro:bitボードのエッジコネクタにあります。
micro:bit はこれらの端子に外付けの弱い(10M)プルアップを接続しています。そのため、端子を触っていないときはHIGHレベル(高い電圧)が入力され、GND端子と一緒に触ったときはLOWレベル(低い電圧)が入力されます。micro:bitはこれをもとにタッチしたかどうかを判断しています。
5.LEDの明るさを制御する
(1) 目的
ポテンショメータでLEDの明るさをコントロールしたい。
(2) 方法
回路を構築するには以下のものが必要です。
- 10KΩ ポテンショメータ
- 220Ω 抵抗
- 5mm LED
- ワニグチクリップ×6
以下の手順で回路を配線します。
- LED のプラス側のリード線を micro:bit 端子P1に接続してください。
- LED のマイナスリード線を micro:bit 端子GNDに接続してください。
- ポテンショメータの中間ピンを micro:bit 端子P0に接続します。
- ポテンショメータの外側のピンの1つをmicro:bit 端子3Vに接続します。
- ポテンショメータのもう一方の外ピンを micro:bit GND ピンに接続します。
また、以下の手順でMakeCodeでコードをビルドします。
- ツールボックスで、高度なブロックの入出力端子カテゴリをクリックします。次に、アナログで出力する端子ブロックをクリックしてドラッグし、ずっとブロック内に配置します。次に、ドロップダウンメニューからP1を選択します。
- ツールボックスで、入出力端子カテゴリをを再度クリックします。次に、アナログ値を読み取る端子ブロックをクリックしてドラッグし、アナログで出力する端子ブロック内に配置します。読み取る端子は、ドロップダウンメニューから P0 を選択します。
Javascriptで書くと、以下の通りです。
basic.forever(function () { pins.analogWritePin(AnalogPin.P1, pins.analogReadPin(AnalogPin.P0)) basic.pause(100) })
Pythonで書くと、以下の通りです。
def on_forever(): pins.analog_write_pin(AnalogPin.P1, pins.analog_read_pin(AnalogPin.P0)) basic.pause(100) basic.forever(on_forever)
(3) どのように機能するか
ポテンショメータの軸を回すと、センターピンの電圧が変化します。micro:bit端子P0は、センターピンの電圧をアナログ値を読み取るブロックで読み取り、アナログで出力するブロックを使って、端子P1に同じ値を書き込むことで、LEDの明るさを変えることができます。
アナログ値読み取りブロックは、1~1023 の整数を返します。同じ値をアナログ出力端子に渡すことで、LEDの輝度を制御する端子P1の電圧を制御することができます。
以下の手順では、端子P0のアナログ値500に対して端子P1の電圧を計算する方法を説明します。
まず、最大電圧である3Vを1023で除算して、アナログ読取値の電圧を算出する。
3.0 / 1023 = 0.002932551V
次に、この結果に 500 をかけます
0.002932551 x 500 = 1.46
つまり、500の値は1.46Vを端子P1に送ることになります。
そして、電流制限抵抗として220Ωを入れているので、ダイオードに流れる電流は、6.63mAとなります。
1.46V / 220Ω = 6.63mA
コメントを残す