# シャミ多機能拡張ボードV2 利用マニュアル
本ドキュメントは、シャミ多機能拡張ボード V2 (Xia mi Multi-functional Expansion Board V2) の概要、特徴、利用方法について説明します。
※ 旧バージョン製品V1のドキュメントはこちらにてご確認ください。
# 1. 本ドキュメントの目的
- シャミ多機能拡張ボードV2 の概要説明
- シャミ多機能拡張ボードV2 の仕様説明
- シャミ多機能拡張ボードV2 に関する利用方法の説明
# 2. 概要
シャミ多機能拡張ボードV2 (Xia mi Multi-functional Expansion Board V for micro:bit)は、micro:bit V2用の多機能拡張ボードです。
※ micro:bit V1は利用できないため、ご注意ください。
本拡張ボードはコンパクトなサイズでありながら、多機能で様々な利用シーンに対応できます。
GPIO(3.3Vと5V)及びI2C(3.3Vと5V)の外部拡張用コネクター以外に、四つのモータードライバー、MicroUSB及びDC2.12種類外部電源用コネクター、よく使う数種類のセンサー、ディスプレイ等、予めオンボードで用意されています。モーター・サーボやハスキーレンズなども接続できるので、初心者の学習はもちろん、中上級者の需要にも応えられる拡張ボードです。
※ 本拡張ボードには、信号機LED(赤、黄、青)、温度湿度センサー、ポテンションメーター(可変抵抗器)、赤外線炎センサー、赤外線受信モジュール、RGBライト、OLEDディスプレイ、リレーモジュール、モータードライバーが搭載されています。
STEAM及び情報教育においては、この拡張ボード一枚で様々な学年やレベルに合わせた中長期用途でのご利用が可能です。
micro:bitの基本機能を学ぶだけでなく、プログラミング以外に電子工作学習、ロボットカーやメカナムホイールロボットの制御、課題解決型制作などのご利用にも適しています。
# 3. 購入方法
参考:シャミ多機能拡張ボード (Xia mi Multi-functional Expansion Board for micro:bit)は、当社ウェブストアにてご購入が可能です。
当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# 4. 特徴
- 豊富な拡張コネクター
- micro:bit V2に適した各種モジュールを配置
- STEAM教育に最適
- 中長期間の系統的な学習に最適(初級から中上級レベルまで対応)
- 金属保護フレーム付きのOLEDディスプレイ(128*64)搭載
- 温度・湿度、距離など各種センサーのリアルタイム計測値や注意喚起メッセージなどの表示に利用できる
- ポテンションメーター(可変抵抗器)が搭載されており、ライトの明るさや音の大きさ調整、サーボの角度コントロール、モーターの回転スピードの調整などに利用可能
- 信号機LEDを利用することで、模擬交通信号機の制作が可能。
- OLEDディスプレイと合わせて利用することで、歩行者用時間カウント型信号機の制作も可能。
- その他、各種センサーと合わせて利用することで、正常時・異常時のインジケーターとしても利用可能。
- インジケーター付きのリレーが搭載されており、電源付き外部回路のスイッチとして利用が可能
- 植物の自動給水機などにも利用することが可能
- 温度湿度センサーが搭載されており、現在の温度・湿度をリアルタイムでOLEDディスプレイに表示させることが可能
- 4つのモータードライバーが用意されており、モーターのスピード・回転方向のコントロールができるため、ロボットカーの製作にも最適
- モーター接続用端子台(ターミナルブロック)が用意されているため、リード線のままで接続が可能
- モーターの回転方向を示すインジケーターがあるため、駆動プログラムの確認がしやすく、メカナムホイールロボットプラットフォームの制御基板として使用することも可能
- 拡張ボードの前方に2つのWS2812 RGBライトが搭載されているため、必要な色と明るさを指定して点灯させることが可能
- 炎センサーが搭載されているため、火災検知機を制作することが可能
- 赤外線受信モジュールが搭載されているため、赤外線リモコンの信号を受信し、モーターやサーボのリモート制御等を行うことが可能
- 2種類の超音波距離センサー(SR04超音波センサー、URM10 超音波センサー)を簡単に接続できるコネクターが配置されている
※ 超音波センサーは本製品に付属していないため、別途ご購入する必要があります。
- 7組の3.3V GPIOポート、4組の5V GPIOポート、2組の3.3V I2Cポート、1組の5V I2Cポート、豊富なIO拡張ポートを搭載
- 3.3Vと5Vの両方に対応し、様々なセンサー・モジュールを接続することが可能。
- マイクロUSB(5V)、 DC2.1プラグ(5V-12V)の2種類の電源供給が可能
- DC2.1プラグ(5V-12V)は、規格に合う乾電池ホルダーなどの外部電源も利用可能なので、複数のサーボ、モーター、ハスキーレンズ(AIカメラ)などの電力パワーが必要な場合でもストレスなく利用できる
- 電源ON/OFF用スイッチが用意されている。電源スイッチは、本拡張ボードのマイクロUSB電源とDC2.1プラグ電源のON/OFFができる。
※ 本拡張ボードに装着されているmicro:bitのマイクロUSBに給電されている場合(ケーブルでパソコンなどに接続されている場合)、本拡張ボードにも電源が供給されます。micro:bitのマイクロUSBから供給された電源は、本拡張ボードの電源スイッチでのON/OFFができかねるので、ご注意ください。
- ボードの背面に、Pin関連情報がシルク印刷されいるので、手軽に各種Pinの配置やI2Cのアドレスを確認できる
# 5. 仕様
項目 | 詳細 | ピン | 数量 |
---|---|---|---|
品番 | PPDF-MBT0042 | ー | ー |
電源スイッチ | 電源スイッチは、本拡張ボードのUSB電源及びDC2.1プラグ電源のみを制御。 | ー | 1 |
USB電源 | 5V (マイクロUSB) | ー | 1 |
DC2.1プラグ電源 | 5V〜12V | ー | 1 |
赤外線受信機 | ー | P13 | 1 |
RGBライト | WS2812 | P15 | 2 |
リレーモジュール | ステータス インジケーター付き タイプ:1 Form C 接点定格;1A 120VAC/24VDC アドレス:0x10 | I2C(P19/SCL, P20/SDA) | 1 |
リレー用端子台 | ターミナルブロック ネジ固定式 | NC, COM, NO | 1 |
モータードライバー | ステータス インジケーター付き アドレス:0x10 | I2C(P19/SCL, P20/SDA) | 4 |
モーター用端子台 | ターミナルブロック ネジ固定式 | +, - | 4 |
信号機LED | 赤・黄・青のセット アドレス:0x10 | I2C(P19/SCL, P20/SDA) | 1 |
ポテンションメーター(可変抵抗器) | アドレス:0x10 | I2C(P19/SCL, P20/SDA) | 1 |
赤外線火炎センサー | アドレス:0x10 | I2C(P19/SCL, P20/SDA) | 1 |
OLEDディスプレイ | 解像度:128 x 64 (金属保護カバー付き) アドレス:0x3C | I2C(P19/SCL, P20/SDA) | 1 |
温度湿度センサー | アドレス:0x70 | I2C(P19/SCL, P20/SDA) | 1 |
GPIO (3.3V) | micro:bitの内部電源を利用 | P0, P1, P2, P8, P12, P14, P16 | 7 |
GPIO (5V) | 本ボードに外部電源を接続することで、パワフルな電源を提供 | P0, P1, P2, P8 | 4 |
I2C拡張ポート (3.3V) | micro:bitの内部電源を利用 | I2C(P19/SCL, P20/SDA) | 2 |
I2C拡張ポート (5V) | 外部電源を利用することで、より強力な駆動能力を提供 ※ ハスキーレンズ(AIカメラ)も利用可能 | I2C(P19/SCL, P20/SDA) | 2 |
SR04超音波センサー用ポート | ー | 5V, P0, P1, GND | 1 |
URM10超音波センサー用ポート | ー | 5V, GND, P1, P0 | 1 |
寸法 | 57mm x 87mm (モジュール本体) | ー | ー |
重量 | 59g(パッケージや収納袋を含める) | ー | ー |
製品パッケージ | あり(紙製)135 x 75 x 25mm | ー | ー |
# 6. ボードの配置
# 7. 電源について
- 本ボードへは、USB(マイクロUSB)電源とDC(2.1mm)プラグ電源の2種類の電源供給が可能です。
- USB(マイクロUSB)電源は5V、DC(2.1)プラグ電源は5V〜12Vに対応しています。
- 電源スイッチは、USB(マイクロUSB)電源及びDC(2.1)プラグ電源のON/OFFが可能です。
- モーターやサーボなど、電力パワーが必要な場合、USB(マイクロUSB)電源及びDC(2.1)プラグ電源を利用してください。
- DC(2.1)プラグ電源はよりパワフルな電源供給が可能です。
※ 本拡張ボードに装着されているmicro:bitのマイクロUSBに給電されている場合(ケーブルでパソコンなどに接続されている場合)、本拡張ボードにも電源が供給されます。
※ micro:bitのマイクロUSBから供給された電源は、本拡張ボードの電源スイッチでのON/OFFができかねますので、ご注意ください。
# 8. 利用方法
下記はシャミ多機能拡張ボードの各機能を利用する際のプログラミング例です。
また、より簡単にプログラミングを行えるように、Makecode向けシャミ多機能拡張ボード用のパッケージ(拡張機能)が用意されています。
プログラミングの際ご利用ください。
# 8.1. MakeCode専用パッケージのインポート
MakeCodeで初めからプログラミングする場合、シャミ多機能拡張ボード用のパッケージをインポートする必要があります。
その場合、MakeCodeでプロジェクトを作成し、「拡張機能」にて下記のURLを入力して、パッケージをインポートしてください。
- Makecode用パッケージ: https://github.com/DFRobot/pxt-DFRobot_xia_mi_Board
下記各「MakeCodeプログラミング例(ブロック)」には、予めパッケージがインポートされています。そのままmicro:bitに書き込むことでご利用が可能です。
※ 下記各MakeCode用プログラミング例で利用されているパッケージのバージョンは「0.7.0」です。
※ お客様にてパッケージをインポートする(拡張機能を追加する)際、自動的に最新バージョンがインポートされます。
※ メーカーにて不定期にMakeCode用パッケージのバージョンアップを行なっているため、バージョンアップデートされた際には、お客様にて手順・プログラムの見直しが必要です。
※ 最新のMakeCode用パッケージのバージョンは「MakeCode用パッケージのgithubリポジトリ (opens new window)」にて確認が可能です。
# 8.2. RGB LEDライトの利用
本製品は、2つのRGB LEDライトを付属しています。
本サンプルプログラムでは、二つのRGB LEDライトを赤色、緑色、青色の順に同タイミングで点灯させ、その後RGB LEDライトをピンクと黄色で交互に点滅させます。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
xiamiBoard.initXiaMiBoard()
xiamiBoard.ledBlank()
xiamiBoard.setBrightness(100)
basic.pause(1000)
xiamiBoard.showColor(0xff0000)
basic.pause(1000)
xiamiBoard.showColor(0x00ff00)
basic.pause(1000)
xiamiBoard.showColor(0x007fff)
basic.pause(1000)
xiamiBoard.ledBlank()
basic.forever(function () {
xiamiBoard.setIndexColor(0, xiamiBoard.rgb(200, 0, 200))
xiamiBoard.setIndexColor(1, 0x000000)
basic.pause(1000)
xiamiBoard.setIndexColor(0, 0x000000)
xiamiBoard.setIndexColor(1, xiamiBoard.rgb(255, 255, 0))
basic.pause(1000)
})
# MakeCodeプログラミング例(python)
xiamiBoard.init_xia_mi_board()
xiamiBoard.led_blank()
xiamiBoard.set_brightness(100)
basic.pause(1000)
xiamiBoard.show_color(0xff0000)
basic.pause(1000)
xiamiBoard.show_color(0x00ff00)
basic.pause(1000)
xiamiBoard.show_color(0x007fff)
basic.pause(1000)
xiamiBoard.led_blank()
def on_forever():
xiamiBoard.set_index_color(0, xiamiBoard.rgb(200, 0, 200))
xiamiBoard.set_index_color(1, 0x000000)
basic.pause(1000)
xiamiBoard.set_index_color(0, 0x000000)
xiamiBoard.set_index_color(1, xiamiBoard.rgb(255, 255, 0))
basic.pause(1000)
basic.forever(on_forever)
# 8.3. 信号機
本サンプルプログラムでは、3秒おきに赤・黄・緑のLEDライトを順に点灯させます。 擬似的に簡易的な信号機を作れます。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
xiamiBoard.initXiaMiBoard()
xiamiBoard.ledBlank()
basic.forever(function () {
xiamiBoard.LED(0, 0, 1)
basic.pause(5000)
xiamiBoard.LED(0, 1, 0)
basic.pause(2000)
xiamiBoard.LED(1, 0, 0)
basic.pause(5000)
})
# MakeCodeプログラミング例(python)
xiamiBoard.init_xia_mi_board()
xiamiBoard.led_blank()
def on_forever():
xiamiBoard.LED(0, 0, 1)
basic.pause(5000)
xiamiBoard.LED(0, 1, 0)
basic.pause(2000)
xiamiBoard.LED(1, 0, 0)
basic.pause(5000)
basic.forever(on_forever)
# 8.4. 温度・湿度計
本サンプルプログラムでは、温度・湿度センサーを利用し、取得した現在の温度・湿度値をOLEDディスプレイに表示します。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
xiamiBoard.initXiaMiBoard()
xiamiBoard.tempHumiInit(SENSOR.SHTC3)
xiamiBoard.ledBlank()
xiamiBoard.OLEDclear()
basic.forever(function () {
xiamiBoard.OLEDshowUserText("TEMP: " + ("" + xiamiBoard.readSensor(SENSOR.SHTC3, PARA.TEMP)) + " C", 0, 0)
xiamiBoard.OLEDshowUserText("Humidity: " + ("" + xiamiBoard.readSensor(SENSOR.SHTC3, PARA.HUM)) + " %", 2, 0)
})
# MakeCodeプログラミング例(python)
xiamiBoard.init_xia_mi_board()
xiamiBoard.temp_humi_init(SENSOR.SHTC3)
xiamiBoard.led_blank()
xiamiBoard.ole_dclear()
def on_forever():
xiamiBoard.ole_dshow_user_text("TEMP: " + ("" + str(xiamiBoard.read_sensor(SENSOR.SHTC3, PARA.TEMP))) + " C",
0,
0)
xiamiBoard.ole_dshow_user_text("Humidity: " + ("" + str(xiamiBoard.read_sensor(SENSOR.SHTC3, PARA.HUM))) + " %",
2,
0)
basic.forever(on_forever)
# 8.5. ポテンションメーターによるサーボの制御
本サンプルプログラムでは、ポテンションメーター(可変抵抗器)を使用して、P0ポートに接続したサーボの角度を制御します。
また、ノブの位置とサーボの回転角度をリアルタイムでOLEDディスプレイに表示します。
※ 本サンプルプログラムをご利用する際、予めサーボ(180度)を用意し、GPIO(3.3V)のPOコネクターに接続してください。
※ 本拡張ボードのポテンションメーター(可変抵抗器)を回転させることで、0〜1023の範囲で入力することが可能です。
※ 本サンプルプログラムでは、ポテンションメーターの入力値(範囲:0〜1023)をサーボの可動域(範囲0°〜180°)に均等にマッピングするために、変数angleを定義しています。
※ 本サンプルプログラムでは、サーボの軽微なズレによる故障を防ぐため、可動域180°のサーボの動作範囲を3°〜177°でプログラムを作成しています。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
let angle = 0
xiamiBoard.initXiaMiBoard()
xiamiBoard.ledBlank()
xiamiBoard.OLEDclear()
basic.forever(function on_forever() {
angle = Math.round(pins.map(xiamiBoard.readAngle(), 0, 1023, 3, 177))
xiamiBoard.OLEDshowUserText("Sensor:" + ("" + ("" + xiamiBoard.readAngle())), 0, 0)
xiamiBoard.OLEDshowUserText("Servo:" + ("" + ("" + angle)), 1, 0)
pins.servoWritePin(AnalogPin.P0, angle)
basic.pause(500)
xiamiBoard.clear(0, 7, 10)
xiamiBoard.clear(1, 6, 10)
})
# MakeCodeプログラミング例(python)
angle = 0
xiamiBoard.init_xia_mi_board()
xiamiBoard.led_blank()
xiamiBoard.ole_dclear()
def on_forever():
global angle
angle = Math.round(pins.map(xiamiBoard.read_angle(), 0, 1023, 3, 177))
xiamiBoard.ole_dshow_user_text("Sensor:" + ("" + str(xiamiBoard.read_angle())), 0, 0)
xiamiBoard.ole_dshow_user_text("Servo:" + ("" + str(angle)), 1, 0)
pins.servo_write_pin(AnalogPin.P0, angle)
basic.pause(500)
xiamiBoard.clear(0, 7, 10)
xiamiBoard.clear(1, 6, 10)
basic.forever(on_forever)
# 8.6. 赤外線リモコンによるリレーモジュールの制御
本サンプルプログラムでは、赤外線リモコンを使用して、リレーモジュールを制御します。
リモコンのボタン「1」を押すとスイッチON、ボタン「0」を押すとスイッチOFFにすることが可能です。
また、スイッチのON/OFFに合わせて、マイクロビットに「✓」・「×」を表示します。また、RGB LEDも青色・赤色を光らせます。
※ 本サンプルプログラムはリレーモジュールのオン・オフの切り替えを行うプログラムです。
※ リレーモジュールを利用して他の回路の電源ON/OFFをコントロールしたい場合、本拡張ボード以外で動作させたい電子部品の電源付き回路を、本拡張ボードのリレー用端子台に接続する必要があります。
※ 植物の自動水やり機を作成する場合、ポンプの電源付き回路を、リレー用端子台のCOM端子(+側)とNO端子(-側)に接続することでポンプの電源操作が可能です。
- リレーについて
リレー(relay、継電器)は、受け取った電気信号で電気回路のオン/オフや切り替えを行う部品です。
小電力の入力によって大電力のオン/オフを制御できるため、安全性(感電の防止など)、省電力性や操作性を向上させます。そのためリレーは、広範囲な目的で、家電、制御機器、通信機器などの身近な機器に多用されています。
本拡張ボードのリレーモジュールは三つの端子があります。
NC(ノーマルクローズ)、COM(コモン)、NO(ノーマルオープン)三つの端子へは、端子台で接続が可能です。
通常(Release状態)では、端子COMと端子NCがつながっています。
スイッチをONにする(Actuation状態)と端子COMと端子NOがつながります。
端子NCと端子NOのどちらが端子COMとつながっているかは、拡張ボード上のインジケーターで確認することが可能です。
- 赤外線リモコンのキー配置
赤外線リモコンにキーに対応する整数(キー値の下2桁)があらかじめ設定されています。
赤外線リモコンによって異なるため、ここでは、弊社ウェブストアで販売している赤外線リモコンを例として使用します。
※ シャミ多機能拡張ボードのMakeCode用追加パッケージをご利用の場合、該当ブロックにリモコンボタンに該当する10進数整数を入力してください。
参考:赤外線リモコン(Infrared remote controller)は、当社ウェブストアにてご購入が可能です。
当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
xiamiBoard.IR_callbackUser(function (message) {
if (message == 12) {
basic.showIcon(IconNames.Yes)
xiamiBoard.showColor(0x007fff)
xiamiBoard.setRelay(RELAY.CLOSE)
}
if (message == 22) {
basic.showIcon(IconNames.No)
xiamiBoard.showColor(0xff0000)
xiamiBoard.setRelay(RELAY.DISCON)
}
})
xiamiBoard.initXiaMiBoard()
xiamiBoard.OLEDclear()
xiamiBoard.ledBlank()
xiamiBoard.setBrightness(80)
# MakeCodeプログラミング例(python)
def on_ir_callbackuser(message):
if message == 12:
basic.show_icon(IconNames.YES)
xiamiBoard.show_color(0x007fff)
xiamiBoard.set_relay(RELAY.CLOSE)
if message == 22:
basic.show_icon(IconNames.NO)
xiamiBoard.show_color(0xff0000)
xiamiBoard.set_relay(RELAY.DISCON)
xiamiBoard.IR_callbackUser(on_ir_callbackuser)
xiamiBoard.init_xia_mi_board()
xiamiBoard.ole_dclear()
xiamiBoard.led_blank()
xiamiBoard.set_brightness(80)
# 8.7. 火災警報器
本サンプルプログラムでは、火炎センサーを使って、リアルタイムでOLEDディスプレイに火炎強度を数値で表示します。
火炎センサーの約20cm前でライターの火をつけると、センサーでそれを検知しOLEDディスプレイの計測値が急激に上昇します。
また、火炎強度が200を超えるとアラーム音を鳴らし、RGB LEDを赤色で点灯します。
※ ご注意事項:火を使用する際は、十分に安全性をご確認のうえご利用してください。
※ ご利用に関する事故等について、当社では一切責任を負いませんので、ご了承ください。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
xiamiBoard.initXiaMiBoard()
xiamiBoard.OLEDclear()
xiamiBoard.ledBlank()
xiamiBoard.setBrightness(255)
basic.forever(function () {
xiamiBoard.OLEDshowUserText("Fire:" + xiamiBoard.readFlre(), 0, 0)
if (xiamiBoard.readFlre() > 200) {
xiamiBoard.showColor(0xff0000)
music.play(music.stringPlayable("B - B - B - B - ", 125), music.PlaybackMode.UntilDone)
} else {
xiamiBoard.ledBlank()
music.stopAllSounds()
}
xiamiBoard.clear(0, 6, 10)
})
# MakeCodeプログラミング例(python)
xiamiBoard.init_xia_mi_board()
xiamiBoard.ole_dclear()
xiamiBoard.led_blank()
xiamiBoard.set_brightness(255)
def on_forever():
xiamiBoard.ole_dshow_user_text("Fire:" + str(xiamiBoard.read_flre()), 0, 0)
if xiamiBoard.read_flre() > 200:
xiamiBoard.show_color(0xff0000)
music.play(music.string_playable("B - B - B - B - ", 125),
music.PlaybackMode.UNTIL_DONE)
else:
xiamiBoard.led_blank()
music.stop_all_sounds()
xiamiBoard.clear(0, 6, 10)
basic.forever(on_forever)
# 8.8. 超音波距離センサーによる距離測定
本サンプルプログラムでは、超音波距離センサーで正面の障害物までの距離を測定します。
また、測定した距離をリアルタイムでOLED画面に表示します。
※ 本サンプルプログラムを実行するためには、予めSR04超音波センサーを別途で用意し、本拡張ボードの超音波センサー用ポートに挿入する必要があります。
# MakeCode専用パッケージのインポート
MakeCodeでプロジェクトを作成し、上記本拡張ボードの専用MakeCodeパッケージ以外に、下記SR04超音波センサー用Makecodeパッケージを追加する必要があります。
「拡張機能」にて下記のURLを入力して、パッケージをインポートしてください。
- SR04超音波距離センサー用Makecodeパッケージ: https://github.com/microsoft/pxt-sonar
※ 2024年2月現在、本拡張ボードのMaceCode用パッケージ(拡張機能)に付属している超音波距離センサー用機能の精度に改善の余地があるため、本サンプルプログラムでは、マイクロソフト社から提供されているパッケージ(拡張機能)を追加し利用しています。
※ 下記各「MakeCodeプログラミング例(ブロック)」には、予め必要なパッケージがインポートされています。そのままmicro:bitに書き込むことでご利用が可能です。
参考:SR04超音波センサーは、当社ウェブストアにてご購入が可能です。
当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
xiamiBoard.initXiaMiBoard()
xiamiBoard.OLEDclear()
xiamiBoard.ledBlank()
basic.forever(function on_forever() {
xiamiBoard.OLEDshowUserText("Distance:" + ("" + ("" + sonar.ping(DigitalPin.P0, DigitalPin.P1, PingUnit.Centimeters))), 0, 0)
basic.pause(500)
xiamiBoard.clear(0, 9, 15)
})
# MakeCodeプログラミング例(python)
xiamiBoard.init_xia_mi_board()
xiamiBoard.ole_dclear()
xiamiBoard.led_blank()
def on_forever():
xiamiBoard.ole_dshow_user_text("Distance:" + ("" + str(sonar.ping(DigitalPin.P0, DigitalPin.P1, PingUnit.CENTIMETERS))),
0,
0)
basic.pause(500)
xiamiBoard.clear(0, 9, 15)
basic.forever(on_forever)
# 8.9. モーター駆動
本サンプルプログラムでは、モータードライバーを利用し、一つのモーターを駆動します。
モーター駆動用端子台(ターミナルブロック)M1にモーターを接続し、micro:bitのAボタンを押すことで、モーターが回転(逆転)を開始します。
また、micro:bitのBボタンを押すことで、モーターが停止します。
モーターの回転方向は、オンボードのインジケーターで確認することが可能です。
※ 別途一つのモーターをご用意する必要があります。
# MakeCode ブロック
# MakeCodeプログラミング例(JavaScript)
input.onButtonPressed(Button.A, function () {
xiamiBoard.motorRun(MOTOR.M1, DIRECTION.CCW, 50)
})
input.onButtonPressed(Button.B, function () {
xiamiBoard.motorStop(MOTOR.M1)
})
xiamiBoard.initXiaMiBoard()
xiamiBoard.OLEDclear()
xiamiBoard.ledBlank()
xiamiBoard.motorStop(MOTOR.ALL)
# MakeCodeプログラミング例(python)
def on_button_pressed_a():
xiamiBoard.motor_run(MOTOR.M1, DIRECTION.CCW, 50)
input.on_button_pressed(Button.A, on_button_pressed_a)
def on_button_pressed_b():
xiamiBoard.motor_stop(MOTOR.M1)
input.on_button_pressed(Button.B, on_button_pressed_b)
xiamiBoard.init_xia_mi_board()
xiamiBoard.ole_dclear()
xiamiBoard.led_blank()
xiamiBoard.motor_stop(MOTOR.ALL)