上級

光とセンサーを使おう

RGBライトと色センサーのイベントを使い、スマートトレインから届く情報に反応します。

今日はここまで

下の目標を確認し、無理のない区切りで終えて構いません。

  • 上部LEDをRGBで指定できる
  • 前側センサーの色イベントを受け取れる
  • イベントのcolorとスナップコマンドのcolorsを区別できる

始める前に

走行と停止のPythonコードを実行できること。

用意するもの

  • 接続できるスマートトレイン本体
  • 線路
  • 色スナップ
  • Pythonファイルを編集できる環境
1

上部LEDの色を変える

RGBは赤・緑・青を0〜255で指定します。次のコードでは上部LEDを青にし、2秒後に消します。

from time import sleep
from intelino.trainlib import TrainScanner

with TrainScanner() as train:
    train.set_top_led_color(0, 80, 255)
    sleep(2)
    train.set_top_led_color(0, 0, 0)
2

色を読んだイベントを受け取る

イベントを受け取る関数は、trainとeventの二つを受け取ります。前側色センサーが認識した単色はevent.colorで確認します。inputで待っている間に、手でゆっくり色の上を通過させます。

from intelino.trainlib import TrainScanner

def on_front_color(train, event):
    print(event.color)

with TrainScanner() as train:
    train.add_front_color_change_listener(on_front_color)
    input("色を試したらEnterで終了: ")
3

イベントの名前を正しく使う

単色センサーのイベントはevent.colorです。一方、スナップコマンドの検知イベントは複数色の並びをevent.colorsで受け取ります。旧サイトに混在していた表記を、公式APIに合わせて分けています。

4

反応を小さく試す

最初は色名を表示するだけにします。次に赤を読んだらLEDを赤にするなど、一つの色と一つの動作を追加します。走行も同時に加えるのは、センサー反応を確認してからにします。