注釈

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

参加する理由は?

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

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

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

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

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

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

4.1.6 バッテリーインジケータ

はじめに

このプロジェクトでは、LED バーグラフ上にバッテリーの電力レベルを視覚的に表示できるバッテリーインジケータデバイスを作成します。

必要な部品

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

../_images/4.1.11_battery_indicator_list.png

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

名前

このキットのアイテム

リンク

Raphael Kit

337

Raphael Kit

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

コンポーネントの紹介

購入リンク

GPIO拡張ボード

BUY

ブレッドボード

BUY

ジャンパーワイヤー

BUY

抵抗器

BUY

LEDバーグラフ

-

ADC0834

-

回路図

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO18

Pin 12

1

18

GPIO27

Pin 13

2

27

GPIO25

Pin 22

6

25

GPIO12

Pin 32

26

12

GPIO16

Pin 36

27

16

GPIO20

Pin 38

28

20

GPIO21

Pin 40

29

21

GPIO5

Pin 29

21

5

GPIO6

Pin 31

22

6

GPIO13

Pin 33

23

13

GPIO19

Pin 35

24

19

GPIO26

Pin 37

25

26

../_images/4.1.11_battery_indicator_schematic.png

実験手順

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

../_images/4.1.11_battery_indicator_circuit.png

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

cd ~/raphael-kit/python-pi5

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

sudo python3 3.1.5_BatteryIndicator_zero.py

プログラムが実行されたら、ADC0834の3番ピンとGNDにそれぞれリードアウトワイヤーを接続し、それらを別々のバッテリーの2極にリードアウトしてください。対応するLEDバーグラフのLEDが点灯し、電力レベルが表示されます(測定範囲:0-5V)。

コード

注釈

以下のコードは、 変更/リセット/コピー/実行/停止 ができます。ただし、それに先立ち、 raphael-kit/python-pi5 のようなソースコードのパスに移動する必要があります。コードを変更した後、効果を確認するために直接実行できます。

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

# List of GPIO pins to which LEDs are connected
ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
# Initialize LED objects for each pin in the list
leds = [LED(pin) for pin in ledPins]

# Setup ADC0834 module
ADC0834.setup()

def LedBarGraph(value):
    # Turn off all LEDs
    for i in range(10):
        leds[i].off()
    # Turn on LEDs up to the specified value
    for i in range(value):
        leds[i].on()

try:
    # Main loop to continuously update LED bar graph
    while True:
        # Read analog value from ADC0834
        analogVal = ADC0834.getResult()
        # Convert analog value to LED bar graph level
        LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
    # Turn off all LEDs when program is interrupted
    for i in range(10):
        leds[i].off()

コードの説明

  1. このセクションは必要なライブラリをインポートしています。 gpiozero はLEDを制御するため、 ADC0834 はADCモジュールとのインターフェース、 time は時間に関連する操作に使用されます。

    #!/usr/bin/env python3
    from gpiozero import LED
    import ADC0834
    import time
    
  2. LEDが接続されたGPIOピンを定義し、各ピンに対してLEDオブジェクトの配列を初期化します。これにより、配列内の各LEDを簡単に制御できます。

    # List of GPIO pins to which LEDs are connected
    ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
    # Initialize LED objects for each pin in the list
    leds = [LED(pin) for pin in ledPins]
    
  3. アナログからデジタルへの変換のためにADC0834モジュールを初期化します。

    # Setup ADC0834 module
    ADC0834.setup()
    
  4. この関数はすべてのLEDをオフにし、指定された値に基づいてLEDをオンにして、バーグラフの表現を作成します。

    def LedBarGraph(value):
        # Turn off all LEDs
        for i in range(10):
            leds[i].off()
        # Turn on LEDs up to the specified value
        for i in range(value):
            leds[i].on()
    
  5. ADC0834からアナログ値を連続的に読み取り、この値に基づいてLEDバーグラフを更新します。アナログ値は0から10の範囲にスケールダウンされます。

    try:
        # Main loop to continuously update LED bar graph
        while True:
            # Read analog value from ADC0834
            analogVal = ADC0834.getResult()
            # Convert analog value to LED bar graph level
            LedBarGraph(int(analogVal/25))
    
  6. プログラムが中断された場合(たとえば、Ctrl+Cを押した場合)、すべてのLEDがオフになるようにします。

    except KeyboardInterrupt:
        # Turn off all LEDs when program is interrupted
        for i in range(10):
            leds[i].off()