未分類

信号機

paypal@vpaso.net

レッスンの目的

  • Codey Rockyを使用して信号機の基本的な動作を再現する
  • タイマーを活用して信号の時間制御を学ぶ
  • 押しボタン式信号機の動作をプログラムする

1. 信号機の基本制御

赤→黄→緑の順に信号を切り替え、一定時間ごとに繰り返すプログラムを作成します。

Pythonコード例:

import codey
import time

def traffic_light():
    while True:
        codey.led.show(255, 0, 0)  # 赤信号
        time.sleep(5)

        codey.led.show(255, 255, 0)  # 黄信号
        time.sleep(2)

        codey.led.show(0, 255, 0)  # 緑信号
        time.sleep(5)

traffic_light()

ポイント:

  • time.sleep() を使用して信号の切り替え時間を設定。
  • 赤→黄→緑の順で自動的に切り替わる。
  • 実際の交通信号機と同様の動作を再現。

2. 押しボタン式信号機の再現

ボタンを押すと赤信号が表示され、一定時間経過後に緑信号へ戻る押しボタン式信号機を作成します。

Pythonコード例:

import codey
import time
def push_button_signal():
    codey.led.show(0, 255, 0)  # 初期状態は緑信号
    while True:
        if codey.button_a.is_pressed():
            codey.led.show(255, 0, 0)  # 赤信号
            time.sleep(3)
            codey.led.show(255, 255, 0)  # 黄信号
            time.sleep(1)
            codey.led.show(0, 0, 0)  # 黄信号
            time.sleep(1)
            codey.led.show(255, 255, 0)  # 黄信号
            time.sleep(1)
            codey.led.show(0, 0, 0)  # 黄信号
            time.sleep(1)
            codey.led.show(0, 255, 0)  # 緑信号へ戻る
push_button_signal()

ポイント:

  • button_a.is_pressed() を利用してボタン押下を検出。
  • 一定時間後に信号が元に戻る動作を実装。
  • 繰り返しの動作が可能。

3. 歩行者用信号機の追加

歩行者用信号機を追加し、自動車信号と連動するプログラムを作成します。

Pythonコード例:

import codey
import time

def pedestrian_signal():
    while True:
        codey.led.show(0, 255, 0)  # 車の信号(緑)
        codey.display.show("Walk")  # 歩行者信号(歩行可)
        time.sleep(5)

        codey.led.show(255, 255, 0)  # 車の信号(黄)
        codey.display.show("Wait")  # 歩行者信号(待機)
        time.sleep(2)

        codey.led.show(255, 0, 0)  # 車の信号(赤)
        codey.display.show("Stop")  # 歩行者信号(停止)
        time.sleep(5)

pedestrian_signal()

ポイント:

  • display.show() を使用して歩行者信号の状態を表示。
  • 自動車と歩行者の信号を同期。
  • 実際の交通システムを模倣。

4. 交差点の信号システムの再現

複数の信号を同期して、交差点の信号制御をシミュレートします。

Pythonコード例:

import codey
import time

def intersection_signal():
    while True:
        codey.led.show(0, 255, 0)  # 主要道路(緑)
        codey.display.show("STOP")  # 側道(赤)
        time.sleep(5)

        codey.led.show(255, 255, 0)  # 主要道路(黄)
        time.sleep(2)

        codey.led.show(255, 0, 0)  # 主要道路(赤)
        codey.display.show("GO")  # 側道(緑)
        time.sleep(5)

intersection_signal()

ポイント:

  • 交差点のメインロードとサイドロードの信号を交互に制御。
  • 走行パターンを追加してシミュレーション可能。

5. まとめと次回のレッスン

今日学んだこと

  1. 自動信号機の基本的な動作制御
  2. 押しボタン式信号機の仕組み
  3. 歩行者用信号機の追加と同期
  4. 交差点の信号システムの制御

これでCodey Rockyの信号機1は終了です。

次回も楽しみながら学びましょう!

ABOUT ME
記事URLをコピーしました