シティハブ

../_images/hub-city.png
city hub
class CityHub

LEGO® シティハブ。

ハブ内蔵ステータスライトの利用

redcity hublighton
light.on(color)

指定の色でライトを点灯します。

パラメータ:

color (Color) -- ライトの色。

city hublightoff
light.off()

ライトの消灯。

指定の色で、指定の時間だけライトを点灯・消灯して点滅させます。

プログラムの残りの部分が動作している間、ライトは無限に点滅し続けます。

このメソッドは、基本的で、よく使うパターンを作成する簡易な方法を提供します。より一般的で複数色のパターンを作成するには、代わりに animate() を使用してください。

パラメータ:
  • color (Color) -- ライトの色。

  • durations (list) -- 時間のシーケンスを [on_1, off_1, on_2, off_2, ...] の形式で指定。

light.animate(colors, interval)

指定の間隔で1つずつ表示される色のシーケンスでライトをアニメートします。

このアニメーションはバックグラウンドで実行され、プログラムの他の部分は継続的に実行されます。アニメーションが完了すると、繰返し実行します。

パラメータ:
  • colors (list) -- Color の値のシーケンス。

  • interval (Number, ms) -- 色の更新間隔。

バッテリー値の利用

city hubbatteryvoltage
battery.voltage() int: mV

バッテリーの電圧を取得します。

戻り値:

バッテリーの電圧

city hubbatterycurrent
battery.current() int: mA

バッテリーから供給される電流を取得します。

戻り値:

バッテリーの電流。

ボタンとシステム制御

city hubcenteris pressed
buttons.pressed() Set[Button]

どのボタンが押されているかをチェックします。

戻り値:

押されているボタンの集合。

system.info() dict

ハブに関する情報を、以下のキーを持つ辞書として取得します:

  • "name": ハブの名前。これは Bluetooth 接続時に表示される名前です。

  • "reset_reason": ハブが(再)起動した理由。通常の電源オフ後に起動した場合は 0 になります。ファームウェア更新後など、自動的に再起動した場合には 1 になります。ウォッチドッグタイムアウトによるクラッシュ(ファームウェアの問題を示唆)した場合には 2 になります。

  • "host_connected_ble": ハブが Bluetooth 経由でコンピュータ、タブレット、スマートフォンなどに接続されていれば True 、さもなければ False

  • "host_connected_usb": ハブが USB 経由でコンピュータ、タブレット、スマートフォンなどに接続されていれば True 、さもなければ False

  • "program_start_type": プログラムの開始方法。ハブの電源オン時に自動的に開始した場合には 1 になります。ハブのボタンで開始された場合には 2 になります。接続されたコンピュータから開始された場合には 3 になります。

  • "program_id": 現在実行しているプログラムのプログラム(スロット)番号。

戻り値:

システム情報を持つ辞書。

バージョン 3.6 で変更: 名前とリセット理由は、以前は別々のメソッドとして提供されていましたが、現在は info 辞書に含まれています。 ただし、後方互換性のために従来のメソッドも引き続き利用可能です。

city hubcenterstop button is
city hubnonestop button is
system.set_stop_button(button)

実行中のスクリプトを停止させるボタンまたはボタンの組み合わせを設定します。

デフォルトでは実行中のスクリプトを停止するのにセンターボタンを使います。この動作を変更または無効にして、センターボタンを他の用途に使えるようにできます。

パラメータ:

button (Button) -- Button.CENTER 、または複数のボタンのタプルを指定します。停止ボタンを完全に無効にするには None を指定します。望むなら、中央ボタンを3秒間押すことで、ハブをオフにできます。

system.storage(offset, write=)
system.storage(offset, read=) bytes

バイナリデータを永続ストレージに読み書きします。

これにより、次にプログラムを実行するときに使えるデータを保存できます。

データは通常、ハブの電源をオフにしたときにフラッシュメモリーに保存されます。ハブを起動したままバッテリーを外すと保存されません。

一度保存されたデータは、バッテリーをを外しても残ります。

パラメータ:
  • offset (int) -- ユーザーストレージメモリの先頭からのオフセットをバイト数で指定します。

  • read (int) -- 読み込むバイト数。書出しの場合はこの引数を省略します。

  • write (bytes) -- 書き込むバイト数。読込み場合は、この引数を省略します。

戻り値:

読込み場合は読み込んだバイト数、書出しの場合は None

例外:

ValueError -- 許容範囲外のデータを読み書きしようとした場合。

このハブには最大128バイトのデータを保存できます。データは Pybricks のファームウェアをアップデートしたとき、または元のファームウェアに戻したときにクリアされます。

system.reset_storage()

すべてのユーザ設定をデフォルト値にリセットし、ユーザプログラムを消去します。

city hubshut down
system.shutdown()

プログラムを停止し、ハブをシャットダウンします。

ステータスライトの利用例

ライトの点灯と消灯

from pybricks.hubs import CityHub
from pybricks.parameters import Color
from pybricks.tools import wait

# ハブを初期化。
hub = CityHub()

# ライトの点灯と消灯を5回繰り返す。
for i in range(5):

    hub.light.on(Color.RED)
    wait(1000)

    hub.light.off()
    wait(500)

明るさの変更と独自色の指定

from pybricks.hubs import CityHub
from pybricks.parameters import Color
from pybricks.tools import wait

# ハブを初期化。
hub = CityHub()

# 30% の照度で色を表示。
hub.light.on(Color.RED * 0.3)

wait(2000)

# 独自色を使用。
hub.light.on(Color(h=30, s=100, v=50))

wait(2000)

# すべての色を変化させながら表示。
for hue in range(360):
    hub.light.on(Color(hue))
    wait(10)

ライトアニメーションの作成

from pybricks.hubs import CityHub
from pybricks.parameters import Color
from pybricks.tools import wait
from umath import sin, pi

# ハブを初期化。
hub = CityHub()

# 複数色を使ったアニメーションを行う。
hub.light.animate([Color.RED, Color.GREEN, Color.NONE], interval=500)

wait(10000)

# 赤をサインカーブのパターンで照度を変えながら表示hub.light.animate([Color.RED * (0.5 * sin(i / 15 * pi) + 0.5) for i in range(30)], 40)

wait(10000)

# 虹色で繰り返しながら表示。
hub.light.animate([Color(h=i * 8) for i in range(45)], interval=40)

wait(10000)

ボタンとシステムの例

プログラム中でのストップボタンの利用方法

from pybricks.hubs import CityHub
from pybricks.parameters import Color, Button
from pybricks.tools import wait, StopWatch

# ハブを初期化。
hub = CityHub()

# ストップボタンを無効化。
hub.system.set_stop_button(None)

# 5秒間のボタンチェック。
watch = StopWatch()
while watch.time() < 5000:

    # 押されたら緑、押さてなければ赤でライトを点灯。
    if hub.buttons.pressed():
        hub.light.on(Color.GREEN)
    else:
        hub.light.on(Color.RED)

# ストップボタンを再有効化。
hub.system.set_stop_button(Button.CENTER)

# これで通常どおりストップボタンが使える。
wait(5000)

ハブの電源オフ

from pybricks.hubs import CityHub
from pybricks.tools import wait

# ハブを初期化。
hub = CityHub()

# さよならを言い、少し時間をおいて実行する。
print("Goodbye!")
wait(100)

# ハブをシャットダウン。
hub.system.shutdown()