Micro:bit、MicropythonでRGBフルカラーLEDに虹色を表示する
RGBフルカラーLED
RGBフルカラーLEDは、赤色、緑色、青色の発光を掛け合わせてフルカラーを表示します。
RGB LEDモジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにあるRGB LEDモジュールを使用します。
他メーカーのRGB LEDモジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
Micro: bitから本モジュールへアナログ信号(PWM)を入力します。
MicropythonとMicro:bit
RGB LEDモジュールに虹色を表示するサンプルソフトを以下に説明します。
フロー
サンプルプログラムは赤、橙、黄、緑、青、紺、紫の順に1秒毎に発光します。
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | R |
P1 | G |
P2 | B |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LEDディスプレイを初期化 # 虹色のRGB 赤、橙、黄、緑、青、紺、紫 rgb_data = [[0, 1023, 1023], [0, 662, 1023], [0, 60, 1023], [1023, 481, 1023], [1023, 441, 0], [1023, 1023, 421], [441, 1023, 501]] while True: for i in range(7): pin0.write_analog(rgb_data[i][0]) pin1.write_analog(rgb_data[i][1]) pin2.write_analog(rgb_data[i][2]) sleep(1000)
結果
赤、橙、黄、緑、青、紺、紫の順に1秒毎に発光しました。
他メーカーのRGB LEDモジュールを購入するときは、 周辺回路にご留意してください。
Micro:bit、Micropythonで3W LEDを省エネで点灯する
3W LED
3W LEDは、照明用などに利用される「パワーLED」ともいいます。3W LEDの駆動電流は、一般的なLEDよりも大きいので、3W LED自身の発熱量が大きくなります。そのため、放熱構造になっています。
3W LEDモジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにある3W LEDモジュールを使用します。
3W LEDモジュールの裏をみると、放熱板があるとわかります。
他メーカーの3W LEDモジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
Micro: bitから本モジュールへ信号を入力します。
MicropythonとMicro:bit
省エネで点灯するサンプルソフトを以下に説明します。照明として使いますが、目に見えないほどの点滅を繰り返して、なるべく消費電力を抑えます。
フロー
サンプルプログラムは、3W LEDを0.9 ms毎に点滅します。
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | S |
3V | + |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LEDディスプレイを初期化 while True: pin0.write_digital(1) sleep(0.9) pin0.write_digital(0) sleep(0.9)
結果
点滅は認識できないほど、細かな点滅をしていると思います(根拠がない...。)が、とりあえずは3W LEDは照明として使えます。
他メーカーの3W LEDモジュールを購入するときは、 周辺回路にご留意してください。
Micro:bit、Micropythonで白色LEDを点灯する
デジタル白色LED
白色LEDは、ピラニアLEDともいいます。大きなレンズで広い角度に照射できます。
デジタル白色LEDモジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにあるデジタル白色LEDモジュールを使用します。
他メーカーのデジタル白色LEDモジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
Micro: bitから本モジュールへデジタル信号を入力します。
MicropythonとMicro:bit
約5秒間にかけて白色LEDを最大の明るさにします。その次に約5秒間にかけて消灯します。
フロー
サンプルプログラムのフローを以下に示します。
- 5115 ms間、5 ms毎に0.003 Vずつ増加して印加
- 5115 ms間、5 ms毎に-0.003 Vずつ減少して印加
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | S |
3V | + |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LEDディスプレイを初期化 while True: i = 0 while i <= 1023: pin0.write_analog(i) i += 1 sleep(5) i = 1023 while i >= 0: pin0.write_analog(i) i -= 1 sleep(5)
結果
約5秒間にかけて白色LEDを最大の明るさになって、その次に約5秒間にかけて消灯しました。
他メーカーのデジタル白色LEDモジュールを購入するときは、 周辺回路にご留意してください。
Micro:bit、Micropythonで信号機の3つのLEDを次々に点灯する
信号機
信号機は、赤色LED、黄色LED、緑色LEDで構成されています。
信号機モジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにある信号機モジュールを使用します。
他メーカーの信号機モジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
Micro: bitから本モジュールへ信号をデジタル入力します。
MicropythonとMicro:bit
3つのLEDを次々に点灯するサンプルソフトを以下に説明します。
フロー
サンプルプログラムのフローを以下に示します。
- 3つのLEDを消灯
- 赤色LEDを1秒間点灯
- 3つのLEDを消灯
- 黄色LEDを1秒間点灯
- 3つのLEDを消灯
- 緑色LEDを1秒間点灯
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | R |
P1 | Y |
P2 | G |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LEDディスプレイを初期化 led_data = [0, 0, 0] while True: for i in range(3): if i == 0: led_data = [1, 0, 0] elif i == 1: led_data = [0, 1, 0] elif i == 2: led_data = [0, 0, 1] else: led_data = [0, 0, 0] pin0.write_digital(led_data[0]) pin1.write_digital(led_data[1]) pin2.write_digital(led_data[2]) sleep(1000)
結果
3つのLEDが次々に1秒毎に点灯しました。
他メーカーの信号機モジュールを購入するときは、 周辺回路にご留意してください。
Micro:bit、Micropython、赤外線モーションセンサ(PIR AM312)で人体を検出する
PIRモーションセンサ
PIRモーションセンサは、人体を検出するセンサです。このセンサは焦電型赤外線センサともいいます。温度をもつ人体から放射されている赤外線を含む光を焦電効果によって検出します。また、フレネルレンズを装着することがあります。フレネルレンズは、レンズ表面に同心円状の切れ込みを入れて、レンズの大きさや厚みを抑えています。
- 光を検出
- 光を電気に変換(スイッチ)
- 非接触センサー
- 受動的センサ
PIRモーションセンサモジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにあるPIRモーションセンサモジュールを使用します。
他メーカーのPIRモーションセンサモジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
本モジュールからMicro: bitへデジタル信号を入力します。
MicropythonとMicro:bit
人体を検出するサンプルソフトを以下に説明します。
フロー
サンプルプログラムのフローを以下に示します。
- 通常は、LEDディスプレイがNOを表示
- 人が来たとき、YES(チェックマーク)を表示
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | S |
3V | + |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LEDディスプレイを初期化 pin0.set_pull(pin0.NO_PULL) # ピンの状態 sleep(10000) # Warm-up time, 10 sec while True: if pin0.read_digital(): display.show(Image.YES) else: display.show(Image.NO) sleep(100)
結果
手を検出するとLEDディスプレイがYESを表示します。
他メーカーのPIRモーションセンサモジュールを購入するときは、 周辺回路にご留意してください。
Micro:bit、Micropython、ホール磁気センサ(3144 402)で磁気を検出する
ホール磁気センサ
ホール磁気センサは、磁気を検出するセンサです。このセンサはホール効果を利用して、磁気を電流に変換しています。
- 磁気を検出
- 磁気を電気に変換(ホール効果・スイッチ)
- 非接触センサー
- 受動的センサ
ホール磁気センサモジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにあるホール磁気センサモジュールを使用します。
他メーカーのホール磁気センサモジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
本モジュールからMicro: bitへデジタル信号を入力します。
MicropythonとMicro:bit
磁気を検出するサンプルソフトを以下に説明します。
フロー
サンプルプログラムのフローを以下に示します。
- 磁石をセンサに近づけるとLEDディスプレイはYES(チェックマーク)を表示
- 磁石を遠ざけるとNOを表示
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | S |
3V | + |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LCEディスプレイを初期化 pin0.set_pull(pin0.NO_PULL) # ピンの状態 while True: if pin0.read_digital(): display.show(Image.NO) else: display.show(Image.YES) sleep(100)
結果
印刷している面にS極を近づけたとき、LEDディスプレイはYES(チェックマーク)を表示します。逆にN極の場合は表示しません。
他メーカーのホール磁気センサモジュールを購入するときは、 周辺回路にご留意してください。
Micro:bit、Micropython、振動センサ(801S)で衝撃的振動を検出する
振動センサ
振動センサは、振動を検出するセンサです。ノックセンサ(knock sensor)またはバネ式振動センサともいいます。このセンサの内部には、とてもやわらないバネが細長い電極を囲んでいます。衝撃的にセンサを動かすとバネが電極に接触して、電流が流れます。
- 力を検出
- 力を電気に変換(スイッチ)
- 接触センサー
- 受動的センサ
振動センサモジュール
ここでは、KEYESTUDIO製のBBC Micro: bitのスターターキットにある振動センサモジュールを使用します。
他メーカーの振動センサモジュールを購入するときは、 周辺回路にご留意してください。
インターフェース
本モジュールからMicro: bitへデジタル信号を入力します。
MicropythonとMicro:bit
衝撃的振動を検出するサンプルソフトを以下に説明します。
フロー
サンプルプログラムは、振動センサの出力をそのままLEDディスプレイに表示します。
接続
接続表と接続図(写真)を示します。
Micro:bit | モジュール |
P0 | S |
3V | + |
GND | - |
コード
from microbit import * # Micro:bitを初期化 display.clear() # LEDディスプレイを初期化 pin0.set_pull(pin0.NO_PULL) # ピンの状態 while True: data_value = pin0.read_digital() display.show(data_value) sleep(100)
結果
床や机の上に置いて、トントンするとLEDディスプレイが1を表示します。
他メーカーの振動センサモジュールを購入するときは、 周辺回路にご留意してください。