注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。

なぜ参加するのか?

  • 専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。

  • 学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。

  • 限定プレビュー:新製品発表や予告編に早期アクセス。

  • 特別割引:最新製品の特別割引を楽しむ。

  • フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

レッスン29: 交通信号モジュール

このレッスンでは、Raspberry Piを使用して交通信号をシミュレートする方法を学びます。Raspberry Piをプログラムして、交通信号に似た順序でこれらのLEDを制御します。赤色LEDは3秒間点灯し、黄色LEDは特定のパターンで点滅し、その後、緑色LEDが3秒間点灯します。このプロジェクトは、GPIOインターフェースとPythonプログラミングを使って始めるのに実用的な方法であり、ハードウェアとソフトウェアを組み合わせたRaspberry Piの初心者に最適です。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

全てが揃ったキットを購入すると便利です。リンクはこちらです:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

以下のリンクから個別に購入することもできます。

Component Introduction

Purchase Link

Raspberry Pi 5

購入

信号機モジュール

購入

ブレッドボード

購入

配線

../_images/Lesson_29_Traffic_Light_Module_Pi_bb.png

コード

from gpiozero import LED
from time import sleep

# Initialize LED pins
red = LED(22)    # Red LED connected to GPIO pin 22
yellow = LED(27) # Yellow LED connected to GPIO pin 27
green = LED(17)  # Green LED connected to GPIO pin 17

# LED control in a continuous loop
try:
    while True:
        # Red LED cycle
        red.on()     # Turn on red LED
        sleep(3)     # Red LED on for 3 seconds
        red.off()    # Turn off red LED

        # Yellow LED blinking pattern
        yellow.on()  # Turn on yellow LED
        sleep(0.5)   # Yellow LED on for 0.5 second
        yellow.off() # Turn off yellow LED
        sleep(0.5)   # Off for 0.5 second
        yellow.on()  # Repeat blinking
        sleep(0.5)   # Yellow LED on for 0.5 second
        yellow.off() # Turn off yellow LED
        sleep(0.5)   # Off for 0.5 second
        yellow.on()  # Repeat blinking
        sleep(0.5)   # Yellow LED on for 0.5 second
        yellow.off() # Turn off yellow LED
        sleep(0.5)   # Off for 0.5 second

        # Green LED cycle
        green.on()   # Turn on green LED
        sleep(3)     # Green LED on for 3 seconds
        green.off()  # Turn off green LED

except KeyboardInterrupt:
    # Turn off all LEDs and exit safely on keyboard interrupt
    red.off()
    yellow.off()
    green.off()

コード解析

  1. ライブラリのインポート

    gpiozero ライブラリはGPIOピンを制御するためにインポートされ、 time ライブラリの sleep 関数はタイミングの遅延に使用されます。

    from gpiozero import LED
    from time import sleep
    
  2. LEDピンの初期化

    ここでは、各LEDが gpiozero ライブラリの LED クラスを使用してRaspberry Piの特定のGPIOピンに関連付けられます。

    red = LED(22)    # Red LED connected to GPIO pin 22
    yellow = LED(27) # Yellow LED connected to GPIO pin 27
    green = LED(17)  # Green LED connected to GPIO pin 17
    
  3. LED制御ループ

    while True:``ループは連続して実行され、各LEDを順番に点灯および消灯します。 ``on() , off() , sleep() 関数を使用して、特定のパターンで各LEDを制御します。

    • 赤色LEDは3秒間点灯します。

    • 黄色LEDは点滅します:0.5秒点灯、0.5秒消灯を3回繰り返します。

    • 緑色LEDは3秒間点灯します。

    try:
        while True:
            # Red LED cycle
            red.on()
            sleep(3)
            red.off()
    
            # Yellow LED blinking pattern
            # [The pattern is repeated three times]
    
            # Green LED cycle
            green.on()
            sleep(3)
            green.off()
    
  4. 例外処理

    except ブロックは KeyboardInterrupt (通常はCtrl+Cを押すことで発生)をキャッチします。プログラムが終了する前にすべてのLEDを消灯し、LEDが不定の状態に残らないようにします。

    except KeyboardInterrupt:
        red.off()
        yellow.off()
        green.off()