注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

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

1.1.3 LED バーグラフ

概要

このプロジェクトでは、LEDバーグラフ上のライトを順番に点灯させます。

必要な部品

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

../_images/1.1.3_led_bar_list.png

一式を購入するのが便利です、こちらがリンクです:

名前

このキットのアイテム

リンク

Raphael Kit

337

Raphael Kit

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

コンポーネントの紹介

購入リンク

GPIO拡張ボード

BUY

ブレッドボード

BUY

ジャンパーワイヤー

BUY

抵抗器

BUY

LEDバーグラフ

-

回路図

T-Board Name

physical

wiringPi

BCM

GPIO18

Pin 12

1

18

GPIO23

Pin 16

4

23

GPIO24

Pin 18

5

24

GPIO25

Pin 22

6

25

SPICE0

Pin 24

10

8

SPICE1

Pin 26

11

7

GPIO12

Pin 32

26

12

GPIO16

Pin 36

27

16

GPIO20

Pin 38

28

22

GPIO21

Pin 40

29

21

../_images/1.1.3_LedBarGraph_schematic.png

実験手順

ステップ1: 回路を組み立てます。

注釈

接続する際に方向に注意してください。逆に接続すると点灯しません。

../_images/1.1.3_LedBarGraph_circuit.png

ステップ2: コードのフォルダに移動します。

cd ~/raphael-kit/python-pi5

ステップ3: 実行可能ファイルを実行します。

sudo python3 1.1.3_LedBarGraph_zero.py

コードを実行した後、LEDバーグラフ上のLEDが定期的に点灯および消灯するのを確認できます。

コード

注釈

以下のコードは 変更/リセット/コピー/実行/停止 することができます。ただし、それを行う前に「raphael-kit/python_5」というソースコードのパスに移動する必要があります。コードを変更した後、そのまま実行して効果を確認できます。

#!/usr/bin/env python3
from gpiozero import LED
from time import sleep

# Define GPIO pins where LEDs are connected
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]

# Create LED objects for each pin
leds = [LED(pin) for pin in led_pins]

def odd_led_bar_graph():
    # Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.)
    for i in range(5):
        j = i * 2  # Calculate odd index
        leds[j].on()  # Turn on odd-numbered LED
        sleep(0.3)    # Delay for visual effect
        leds[j].off() # Turn off LED

def even_led_bar_graph():
    # Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.)
    for i in range(5):
        j = i * 2 + 1  # Calculate even index
        leds[j].on()   # Turn on even-numbered LED
        sleep(0.3)     # Delay for visual effect
        leds[j].off()  # Turn off LED

def all_led_bar_graph():
    # Sequentially light up all LEDs one by one
    for led in leds:
        led.on()       # Turn on LED
        sleep(0.3)     # Delay for visual effect
        led.off()      # Turn off LED

def turn_off_all_leds():
    # Turn off all LEDs at once
    for led in leds:
        led.off()

try:
    # Main loop to cycle through LED patterns
    while True:
        odd_led_bar_graph()   # Activate odd-numbered LEDs
        sleep(0.3)            # Pause between patterns
        even_led_bar_graph()  # Activate even-numbered LEDs
        sleep(0.3)            # Pause between patterns
        all_led_bar_graph()   # Activate all LEDs
        sleep(0.3)            # Pause before restarting

except KeyboardInterrupt:
    # Handle interruption (Ctrl+C) gracefully
    turn_off_all_leds()      # Ensure all LEDs are turned off on exit
    pass

コードの説明

  1. これらの行は必要なクラスと関数をインポートします。LED制御のための gpiozeroLED および遅延のための timesleep です。

    #!/usr/bin/env python3
    from gpiozero import LED
    from time import sleep
    
  2. led_pins リストにはGPIOピン番号が含まれており、 ledsled_pins の各ピンに対応する LED オブジェクトのリストです。

    # Define GPIO pins where LEDs are connected
    led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
    
    # Create LED objects for each pin
    leds = [LED(pin) for pin in led_pins]
    
  3. LEDバーグラフの奇数番号のLEDを順番に点灯させます。

    def odd_led_bar_graph():
        # Sequentially light up odd-numbered LEDs (index 0, 2, 4, etc.)
        for i in range(5):
            j = i * 2  # Calculate odd index
            leds[j].on()  # Turn on odd-numbered LED
            sleep(0.3)    # Delay for visual effect
            leds[j].off() # Turn off LED
    
  4. LEDバーグラフの偶数番号のLEDを順番に点灯させます。

    def even_led_bar_graph():
        # Sequentially light up even-numbered LEDs (index 1, 3, 5, etc.)
        for i in range(5):
            j = i * 2 + 1  # Calculate even index
            leds[j].on()   # Turn on even-numbered LED
            sleep(0.3)     # Delay for visual effect
            leds[j].off()  # Turn off LED
    
  5. LEDバーグラフのLEDを1つずつ順番に点灯させます。

    def all_led_bar_graph():
        # Sequentially light up all LEDs one by one
        for led in leds:
            led.on()       # Turn on LED
            sleep(0.3)     # Delay for visual effect
            led.off()      # Turn off LED
    
  6. while True ループはLEDパターンを連続してサイクルします。 except ブロックはKeyboardInterrupt(Ctrl+C)を処理し、終了時にすべてのLEDが消灯することを確認します。

try:
    # Main loop to cycle through LED patterns
    while True:
        odd_led_bar_graph()   # Activate odd-numbered LEDs
        sleep(0.3)            # Pause between patterns
        even_led_bar_graph()  # Activate even-numbered LEDs
        sleep(0.3)            # Pause between patterns
        all_led_bar_graph()   # Activate all LEDs
        sleep(0.3)            # Pause before restarting

except KeyboardInterrupt:
    # Handle interruption (Ctrl+C) gracefully
    turn_off_all_leds()      # Ensure all LEDs are turned off on exit
    pass