.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _1.1.3_py_pi5: 1.1.3 LED バーグラフ ====================== 概要 ------------- このプロジェクトでは、LEDバーグラフ上のライトを順番に点灯させます。 必要なコンポーネント ------------------------------ このプロジェクトには、次のコンポーネントが必要です。 .. image:: ../python_pi5/img/1.1.3_led_bar_list.png .. raw:: html
回路図 ------------------------- ============ ======== ======== === 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 ============ ======== ======== === .. image:: ../python_pi5/img/1.1.3_LedBarGraph_schematic.png 実験手順 ------------------------------ **ステップ1**: 回路を組み立てます。 .. note:: 接続する際に方向に注意してください。逆に接続すると点灯しません。 .. image:: ../python_pi5/img/1.1.3_LedBarGraph_circuit.png **ステップ2:** コードのフォルダに移動します。 .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **ステップ3**: 実行可能ファイルを実行します。 .. raw:: html .. code-block:: sudo python3 1.1.3_LedBarGraph.py コードを実行した後、LEDバーグラフ上のLEDが定期的に点灯および消灯するのを確認できます。 .. warning:: エラー メッセージ ``RuntimeError: Cannot determine SOC peripheral base address`` が表示された場合は、 :ref:`faq_soc` を参照してください。 **コード** .. note:: 以下のコードは **変更/リセット/コピー/実行/停止** することができます。ただし、それを行う前に「davinci-kit-for-raspberry-pi/python-pi5」というソースコードのパスに移動する必要があります。コードを変更した後、そのまま実行して効果を確認できます。 .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED from time import sleep # LEDが接続されているGPIOピンを定義します led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21] # 各ピンに対応するLEDオブジェクトを作成します leds = [LED(pin) for pin in led_pins] def odd_led_bar_graph(): # 奇数番目のLED(インデックス0, 2, 4など)を順番に点灯させます。 for i in range(5): j = i * 2 # 奇数のインデックスを計算 leds[j].on() # 奇数番目のLEDを点灯 sleep(0.3) # 視覚効果のための遅延 leds[j].off() # LEDを消灯 def even_led_bar_graph(): # 偶数番目のLED(インデックス1, 3, 5など)を順番に点灯させます。 for i in range(5): j = i * 2 + 1 # 偶数のインデックスを計算 leds[j].on() # 偶数番目のLEDを点灯 sleep(0.3) # 視覚効果のための遅延 leds[j].off() # LEDを消灯 def all_led_bar_graph(): # すべてのLEDを順番に点灯させます for led in leds: led.on() # LEDを点灯 sleep(0.3) # 視覚効果のための遅延 led.off() # LEDを消灯 def turn_off_all_leds(): # すべてのLEDを一斉に消灯させます for led in leds: led.off() try: # LEDパターンをサイクルするためのメインループ while True: odd_led_bar_graph() # 奇数番目のLEDをアクティブに sleep(0.3) # パターン間の一時停止 even_led_bar_graph() # 偶数番目のLEDをアクティブに sleep(0.3) # パターン間の一時停止 all_led_bar_graph() # すべてのLEDをアクティブに sleep(0.3) # 再起動前の一時停止 except KeyboardInterrupt: # 中断(Ctrl+C)を処理する turn_off_all_leds() # 終了時にすべてのLEDが消灯するようにします pass **コードの説明** #. これらの行は必要なクラスと関数をインポートします。LED制御のための ``gpiozero`` の ``LED`` および遅延のための ``time`` の ``sleep`` です。 .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED from time import sleep #. ``led_pins`` リストにはGPIOピン番号が含まれており、 ``leds`` は ``led_pins`` の各ピンに対応する ``LED`` オブジェクトのリストです。 .. code-block:: python # LEDが接続されているGPIOピンを定義します led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21] # 各ピンに対応するLEDオブジェクトを作成します leds = [LED(pin) for pin in led_pins] #. LEDバーグラフの奇数番号のLEDを順番に点灯させます。 .. code-block:: python def odd_led_bar_graph(): # 奇数番号のLED(インデックス0, 2, 4など)を順番に点灯させます for i in range(5): j = i * 2 # 奇数のインデックスを計算します leds[j].on() # 奇数番号のLEDを点灯させます sleep(0.3) # 視覚的な効果のための遅延 leds[j].off() # LEDを消灯させます #. LEDバーグラフの偶数番号のLEDを順番に点灯させます。 .. code-block:: python def even_led_bar_graph(): # 偶数番号のLED(インデックス1, 3, 5など)を順番に点灯させます for i in range(5): j = i * 2 + 1 # 偶数のインデックスを計算します leds[j].on() # 偶数番号のLEDを点灯させます sleep(0.3) # 視覚的な効果のための遅延 leds[j].off() # LEDを消灯させます #. LEDバーグラフのLEDを1つずつ順番に点灯させます。 .. code-block:: python def all_led_bar_graph(): # すべてのLEDを順番に点灯させます for led in leds: led.on() # LEDを点灯させます sleep(0.3) # 視覚的な効果のための遅延 led.off() # LEDを消灯させます #. ``while True`` ループはLEDパターンを連続してサイクルします。 ``except`` ブロックはKeyboardInterrupt(Ctrl+C)を処理し、終了時にすべてのLEDが消灯することを確認します。 .. code-block:: python try: # LEDパターンをサイクルするメインループ while True: odd_led_bar_graph() # 奇数番号のLEDをアクティブにする sleep(0.3) # パターン間の一時停止 even_led_bar_graph() # 偶数番号のLEDをアクティブにする sleep(0.3) # パターン間の一時停止 all_led_bar_graph() # すべてのLEDをアクティブにする sleep(0.3) # 再開前の一時停止 except KeyboardInterrupt: # インタラプト(Ctrl+C)を処理します turn_off_all_leds() # 終了時にすべてのLEDが消灯していることを確認します pass