# 8.8 遊ぼうペンギン







# 学習目標

このコースでは、micro:bit(マイクロビット)、超音波距離センサーモジュール、サーボ、ビルディングブロックを利用して、人や物を近づけると喜ぶ「遊ぼうペンギン」を製作します。




# プログラミング環境の準備


micro:bit(マイクロビット)のPythonのプログラミングは、Muエディターを利用します。
プログラミングを開始するにあたって、以下の準備を完了させる必要があります。

  • Muエディター(Mu Editor)のインストール
  • ワールド オブ モジュール(WOM)専用パッケージのインポート

※ Muエディターは、お使いのパソコンで一回インストールすると、以降継続して利用が可能です。





# サーボの事前校正




ビルディングブロックを組み立てる前に、サーボの校正プログラムをダウンロードし、それを使用してサーボの原点となる角度を調整する必要があります。これを校正と呼びます。

注意


- 使用前に校正を行わないと、使用中にサーボが詰まり、ステアリングギアがストールしてサーボが故障する可能性があります。




# サーボの校正プログラム


from microbit import *
import WOM_Sensor_Kit

while True:
    WOM_Sensor_Kit.WOM_servo360(pin1,175)
    display.show(8)



# サーボの校正方法


サーボを拡張ボードに接続

  • 上記の図に合わせて、サーボをmicro:bit拡張ボードに接続します。(茶色、赤色、黄色のケーブルを黒、赤、黄のコネクターに合わせて接続してください)
  • 付属USBケーブルの二つのマイクロUSBコネクターをそれぞれmicro:bit本体と拡張ボードに接続します。
  • micro:bit本体を拡張ボードに挿入します。
  • Muエディターを使って、サーボの校正用プログラムをmicro:bitに書き込みます。
  • micro:bit本体のディスプレイに「8」が表示され、サーボが正常に校正されていることを確認します。

注意


  • 必ずmicro:bit本体と拡張ボードの両方にUSBを装着してください。
  • micro:bitのUSBポートは、micro:bitへのプログラムの書き込み(ダウンロード)で利用します。
  • 拡張ボードのUSBポートは電源供給で利用します。接続しないとモジュールやサーボへの電源供給が不足する可能性がございます。




# サーボとビルディングブロックの接続


  • ブロック組み立て説明書(PDF)に沿って、ビルディングブロックを組み立ててください。

サーボとビルディングブロックの接続方法

注意


  • 組み立て時は、サーボの取り付ける方向をご注意ください。
  • 方向が間違うとサーボが故障する恐れがあります。
  • 組み立て後、サーボのケーブル側が、上記の図と同じ方向に向いていることをご確認ください。





# モジュールの接続




モジュールを拡張ボードに接続

上記の図に合わせて、超音波距離センサーモジュール、サーボをmicro:bit拡張ボードに接続します。




# プログラミング




# 実現内容


  • 超音波距離センサーでペンギンと前の障害物の距離を常時計測します。
  • ペンギンの前に物体や人が近づくと(30cm以内)、サーボを動作させます。
  • サーボがペンギンの翼を羽ばたかせて、喜ぶ様子を表します。
  • 距離が近ければ近いほど翼を羽ばたくスピードが上がります。



# プログラミング例


# -*- coding: utf-8-*-# Encoding cookie added by Mu Editor
from microbit import *
import WOM_Sensor_Kit

display.off()
x = 0
y = 0
ago = 0
now = 0

while True:
    ago = WOM_Sensor_Kit.WOM_ultrasonic(pin3, pin2)
    sleep(20)
    now = WOM_Sensor_Kit.WOM_ultrasonic(pin3, pin2)
    sleep(20)
    print('ago:')
    print(ago)
    print('now:')
    print(ago)
    if now > 2 and ago > 2:
        if (now - ago < 10 and now - ago > 0) or (ago - now < 10 and ago - now > 0):
            if WOM_Sensor_Kit.WOM_ultrasonic(pin3, pin2) > 20 and WOM_Sensor_Kit.WOM_ultrasonic(pin3, pin2) < 30:
                for x in range(0, 50):
                    y = x + 130
                    WOM_Sensor_Kit.WOM_servo360(pin1, y)
                    sleep(15)
                for x in range(0, 50):
                    y = 180 - x
                    WOM_Sensor_Kit.WOM_servo360(pin1, y)
                    sleep(15)
            if WOM_Sensor_Kit.WOM_ultrasonic(pin3, pin2) < 20:
                for x in range(0, 50):
                    y = x + 130
                    WOM_Sensor_Kit.WOM_servo360(pin1, y)
                    sleep(5)
                for x in range(0, 50):
                    y = 180 - x
                    WOM_Sensor_Kit.WOM_servo360(pin1, y)
                    sleep(5)



Last Updated: 5/17/2023, 8:59:44 AM