熊おふし五郎が行く

主にマイコンボードを動かした記録を書いています

Micro:bit、MicropythonでRGBフルカラーLEDに虹色を表示する

RGBフルカラーLED

RGBフルカラーLEDは、赤色、緑色、青色の発光を掛け合わせてフルカラーを表示します。

RGB LEDモジュール

ここでは、KEYESTUDIO製BBC Micro: bitのスターターキットにあるRGB LEDモジュールを使用します。

f:id:bear_9973:20201110211544j:plain:w300
RGB LEDモジュール

他メーカーのRGB LEDモジュールを購入するときは、 周辺回路にご留意してください。

インターフェース

Micro: bitから本モジュールへアナログ信号(PWM)を入力します。

MicropythonとMicro:bit

RGB LEDモジュールに虹色を表示するサンプルソフトを以下に説明します。

フロー

サンプルプログラムは赤、橙、黄、緑、青、紺、紫の順に1秒毎に発光します。

接続

接続表と接続図(写真)を示します。

Micro:bit モジュール
P0 R
P1 G
P2 B
GND

f:id:bear_9973:20201110211849p:plain:w400
構成図

コード

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秒毎に発光しました。

f:id:bear_9973:20201110212329j:plain:w500
動作状況

他メーカーの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モジュールを使用します。

f:id:bear_9973:20201110210523j:plain:w300
3W LEDモジュール

3W LEDモジュールの裏をみると、放熱板があるとわかります。

f:id:bear_9973:20201110210614j:plain:w300
3W LEDモジュールの裏

他メーカーの3W LEDモジュールを購入するときは、 周辺回路にご留意してください。

インターフェース

Micro: bitから本モジュールへ信号を入力します。

MicropythonとMicro:bit

省エネで点灯するサンプルソフトを以下に説明します。照明として使いますが、目に見えないほどの点滅を繰り返して、なるべく消費電力を抑えます。

フロー

サンプルプログラムは、3W LEDを0.9 ms毎に点滅します。

接続

接続表と接続図(写真)を示します。

Micro:bit モジュール
P0 S
3V +
GND -

f:id:bear_9973:20201110211109p:plain:w400
構成図

コード

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モジュールを使用します。

f:id:bear_9973:20201110205522j:plain:w300
デジタル白色LEDモジュール

他メーカーのデジタル白色LEDモジュールを購入するときは、 周辺回路にご留意してください。

インターフェース

Micro: bitから本モジュールへデジタル信号を入力します。

MicropythonとMicro:bit

約5秒間にかけて白色LEDを最大の明るさにします。その次に約5秒間にかけて消灯します。

フロー

サンプルプログラムのフローを以下に示します。

  1. 5115 ms間、5 ms毎に0.003 Vずつ増加して印加
  2. 5115 ms間、5 ms毎に-0.003 Vずつ減少して印加

接続

接続表と接続図(写真)を示します。

Micro:bit モジュール
P0 S
3V +
GND -

f:id:bear_9973:20201110205758p:plain:w400
構成図

コード

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のスターターキットにある信号機モジュールを使用します。

f:id:bear_9973:20201110204438j:plain:w200
信号機モジュール

他メーカーの信号機モジュールを購入するときは、 周辺回路にご留意してください。

インターフェース

Micro: bitから本モジュールへ信号をデジタル入力します。

MicropythonとMicro:bit

3つのLEDを次々に点灯するサンプルソフトを以下に説明します。

フロー

サンプルプログラムのフローを以下に示します。

  1. 3つのLEDを消灯
  2. 赤色LEDを1秒間点灯
  3. 3つのLEDを消灯
  4. 黄色LEDを1秒間点灯
  5. 3つのLEDを消灯
  6. 緑色LEDを1秒間点灯

接続

接続表と接続図(写真)を示します。

Micro:bit モジュール
P0 R
P1 Y
P2 G
GND -

f:id:bear_9973:20201110204855p:plain:w400
構成図

コード

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モーションセンサは、人体を検出するセンサです。このセンサは焦電型赤外線センサともいいます。温度をもつ人体から放射されている赤外線を含む光を焦電効果によって検出します。また、フレネルレンズを装着することがあります。フレネルレンズは、レンズ表面に同心円状の切れ込みを入れて、レンズの大きさや厚みを抑えています。

f:id:bear_9973:20201108163245p:plain:w400
PIRモーションセンサの仕組み

  • 光を検出
  • 光を電気に変換(スイッチ)
  • 接触センサー
  • 受動的センサ

PIRモーションセンサモジュール

ここでは、KEYESTUDIO製BBC Micro: bitのスターターキットにあるPIRモーションセンサモジュールを使用します。

f:id:bear_9973:20201108163522j:plain:w200
PIRモーションセンサモジュール

他メーカーのPIRモーションセンサモジュールを購入するときは、 周辺回路にご留意してください。

インターフェース

本モジュールからMicro: bitへデジタル信号を入力します。

MicropythonとMicro:bit

人体を検出するサンプルソフトを以下に説明します。

フロー

サンプルプログラムのフローを以下に示します。

  1. 通常は、LEDディスプレイがNOを表示
  2. 人が来たとき、YES(チェックマーク)を表示

接続

接続表と接続図(写真)を示します。

Micro:bit モジュール
P0 S
3V +
GND -

f:id:bear_9973:20201108164035p:plain:w400
構成図

コード

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を表示します。

f:id:bear_9973:20201108164341j:plain:w500
動作状況

他メーカーのPIRモーションセンサモジュールを購入するときは、 周辺回路にご留意してください。

Micro:bit、Micropython、ホール磁気センサ(3144 402)で磁気を検出する

ホール磁気センサ

ホール磁気センサは、磁気を検出するセンサです。このセンサはホール効果を利用して、磁気を電流に変換しています。

f:id:bear_9973:20201108161709p:plain:w400
振動センサの仕組み

  • 磁気を検出
  • 磁気を電気に変換(ホール効果・スイッチ)
  • 接触センサー
  • 受動的センサ

ホール磁気センサモジュール

ここでは、KEYESTUDIO製BBC Micro: bitのスターターキットにあるホール磁気センサモジュールを使用します。

[f:id:bear_9973:20201108161621j:plain:w200
ホール磁気センサモジュール

他メーカーのホール磁気センサモジュールを購入するときは、 周辺回路にご留意してください。

インターフェース

本モジュールからMicro: bitへデジタル信号を入力します。

MicropythonとMicro:bit

磁気を検出するサンプルソフトを以下に説明します。

フロー

サンプルプログラムのフローを以下に示します。

  1. 磁石をセンサに近づけるとLEDディスプレイはYES(チェックマーク)を表示
  2. 磁石を遠ざけるとNOを表示

接続

接続表と接続図(写真)を示します。

Micro:bit モジュール
P0 S
3V +
GND -

f:id:bear_9973:20201108162200p:plain:w400
構成図

コード

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極の場合は表示しません。

f:id:bear_9973:20201108162646j:plain:w500
動作状況

他メーカーのホール磁気センサモジュールを購入するときは、 周辺回路にご留意してください。

Micro:bit、Micropython、振動センサ(801S)で衝撃的振動を検出する

振動センサ

振動センサは、振動を検出するセンサです。ノックセンサ(knock sensor)またはバネ式振動センサともいいます。このセンサの内部には、とてもやわらないバネが細長い電極を囲んでいます。衝撃的にセンサを動かすとバネが電極に接触して、電流が流れます。

f:id:bear_9973:20201108154758p:plain:w200
振動センサの仕組み

  • 力を検出
  • 力を電気に変換(スイッチ)
  • 接触センサー
  • 受動的センサ

振動センサモジュール

ここでは、KEYESTUDIO製BBC Micro: bitのスターターキットにある振動センサモジュールを使用します。

[f:id:bear_9973:20201108154945j:plain:w200
振動センサモジュール

他メーカーの振動センサモジュールを購入するときは、 周辺回路にご留意してください。

インターフェース

本モジュールからMicro: bitへデジタル信号を入力します。

MicropythonとMicro:bit

衝撃的振動を検出するサンプルソフトを以下に説明します。

フロー

サンプルプログラムは、振動センサの出力をそのままLEDディスプレイに表示します。

接続

接続表と接続図(写真)を示します。

Micro:bit モジュール
P0 S
3V +
GND -

f:id:bear_9973:20201108160959p:plain:w400
構成図

コード

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を表示します。

他メーカーの振動センサモジュールを購入するときは、 周辺回路にご留意してください。