注釈

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

参加する理由は?

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

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

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

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

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

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

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

注釈

../_images/mcp3008_and_adc0834.jpg

お使いのキットの種類によって、 ADC0834MCP3008 のどちらかをご確認のうえ、それぞれの説明に進んでください。

はじめに

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

必要なコンポーネント

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

../_images/4.1.11_battery_indicator_list.png

回路図

../_images/4.1.11_battery_indicator_schematic.png

実験手順

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

../_images/4.1.11_battery_indicator_circuit.png

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

cd ~/davinci-kit-for-raspberry-pi/python-pi5

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

sudo python3 3.1.5_BatteryIndicator.py

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

警告

エラー メッセージ RuntimeError: Cannot determine SOC peripheral base address が表示された場合は、 「gpiozero」が動作しない場合。 を参照してください。

コード

注釈

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

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

# LEDが接続されたGPIOピンのリスト
ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
# リスト内の各ピンに対してLEDオブジェクトを初期化
leds = [LED(pin) for pin in ledPins]

# ADC0834モジュールのセットアップ
ADC0834.setup()

def LedBarGraph(value):
    # すべてのLEDをオフにする
    for i in range(10):
        leds[i].off()
    # 指定された値までLEDを点灯させる
    for i in range(value):
        leds[i].on()

try:
    # LEDバーグラフを連続的に更新するためのメインループ
    while True:
        # ADC0834からアナログ値を読み取る
        analogVal = ADC0834.getResult()
        # アナログ値をLEDバーグラフのレベルに変換
        LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
    # プログラムが中断されたときにすべてのLEDをオフにする
    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を簡単に制御できます。

    # LEDが接続されたGPIOピンのリスト
    ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
    # リスト内の各ピンに対してLEDオブジェクトを初期化
    leds = [LED(pin) for pin in ledPins]
    
  3. アナログからデジタルへの変換のためにADC0834モジュールを初期化します。

    # ADC0834モジュールのセットアップ
    ADC0834.setup()
    
  4. この関数はすべてのLEDをオフにし、指定された値に基づいてLEDをオンにして、バーグラフの表現を作成します。

    def LedBarGraph(value):
        # すべてのLEDをオフにする
        for i in range(10):
            leds[i].off()
        # 指定された値までLEDを点灯させる
        for i in range(value):
            leds[i].on()
    
  5. ADC0834からアナログ値を連続的に読み取り、この値に基づいてLEDバーグラフを更新します。アナログ値は0から10の範囲にスケールダウンされます。

    try:
        # LEDバーグラフを連続的に更新するためのメインループ
        while True:
            # ADC0834からアナログ値を読み取る
            analogVal = ADC0834.getResult()
            # アナログ値をLEDバーグラフのレベルに変換
            LedBarGraph(int(analogVal/25))
    
  6. プログラムが中断された場合(たとえば、Ctrl+Cを押した場合)、すべてのLEDがオフになるようにします。

    except KeyboardInterrupt:
        # プログラムが中断されたときにすべてのLEDをオフにする
        for i in range(10):
            leds[i].off()