• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / microbit / microbit:エッジコネクタを使用して外部入出力を制御する方法1

microbit:エッジコネクタを使用して外部入出力を制御する方法1

2021年1月21日 by STEMSHIP コメントを書く

エッジコネクタを介して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に接続します。

  • 図1. microbitの表面
  • 図2. ワニグチクリップ

(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. エッジコネクタのピン割り当て(http://www.kitronik.co.uk/5601B)

3.組み込みボタン(AボタンとBボタン)の使用

(1) 目的

AボタンとBボタンを押して、可能なすべての組み合わせで異なる画像を表示したい。

(2) 方法

  1. ツールボックスで、変数カテゴリをクリックし、変数を追加するボタンをクリックします。
  2. 作成する変数の名前モーダルボックス(ウィンドウ)で、ダブルクォーテーションマークなしで”a“と入力します。そして、Okボタンをクリックして変数を作成します。
  3. 上記の手順を繰り返して、さらに2つの変数”b“と”ab“(二重引用符なし)を作成します。
図4. 変数ブロック
  1. ツールボックスで、変数カテゴリをクリックします。そして、変数abを0にするブロックをクリックしてドラッグして、最初だけブロックの内側に配置します。その後、ドロップダウンリストから変数”a“を選択します。
  2. ツールボックスで、画像カテゴリをクリックします。そして、アイコンの画像ブロックをクリックしてドラッグし、変数aを0にするの中に配置します。その後、ドロップダウンリストからハートアイコンを選択します。
  3. 上記の2つのステップを繰り返して、変数”b“と”ab“のブロックを追加して設定します。また、小さいハートとチェックマークのアイコンを選択します。
図5. アイコンを変数に割り当てる
  1. ツールボックスで、入力カテゴリをクリックして、ボタンAが押されたときブロックを選択します。
  2. ツールボックスで、画像カテゴリをクリックします。次に、画像を0ドットずらして表示ブロックをクリックしてドラッグし、ボタンAが押されたときブロックの中に配置します。そのあとに、デフォルトで選択されていない場合は、ドロップダウンリストから変数”a“を選択します。
  3. ボタンBが押されたときとボタンABが押されたときは、上記の2つのステップを繰り返します。
図6. ボタンが押されたときに変数に保存したアイコン画像を表示する

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端子を右手で触ります。

  1. ツールボックスで、入力カテゴリをクリックして、端子P0がタッチされたときブロックを選択します。
  2. まだ端子P0が選択されていない場合は、ドロップダウンリストからP0を選択します。
  3. ツールボックスで基本をクリックしてから、アイコンを表示ブロックをクリックしてドラッグし、端子P0がタッチされたときブロックの内側に配置します。
図7. 外部入力端子を使用してアイコン画像を表示する

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
図8. ポテンショメータとLEDの配線図

以下の手順で回路を配線します。

  1. LED のプラス側のリード線を micro:bit 端子P1に接続してください。
  2. LED のマイナスリード線を micro:bit 端子GNDに接続してください。
  3. ポテンショメータの中間ピンを micro:bit 端子P0に接続します。
  4. ポテンショメータの外側のピンの1つをmicro:bit 端子3Vに接続します。
  5. ポテンショメータのもう一方の外ピンを micro:bit GND ピンに接続します。

また、以下の手順でMakeCodeでコードをビルドします。

  1. ツールボックスで、高度なブロックの入出力端子カテゴリをクリックします。次に、アナログで出力する端子ブロックをクリックしてドラッグし、ずっとブロック内に配置します。次に、ドロップダウンメニューからP1を選択します。
  2. ツールボックスで、入出力端子カテゴリをを再度クリックします。次に、アナログ値を読み取る端子ブロックをクリックしてドラッグし、アナログで出力する端子ブロック内に配置します。読み取る端子は、ドロップダウンメニューから P0 を選択します。
図9 . アナログ値を読み込んで別の端子からアナログ出力するブロックの配置

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

Filed Under: microbit

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM