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

前書き

このコースでは、LEDバーグラフにバッテリーレベルを視覚的に表示できるバッテリー指示装置を作成する。

部品

_images/list_Battery_Indicator.png

回路図

Tボード名

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/Schematic_three_one5.png

実験手順

ステップ1: 回路を作る。

电量计_bb

C言語ユーザー向け

ステップ2: コードのフォルダーに入る。

cd /home/pi/davinci-kit-for-raspberry-pi/c/3.1.5/

ステップ3: コードをコンパイルする。

gcc 3.1.5_BatteryIndicator.c -lwiringPi

ステップ4: EXEファイルを実行する。

sudo ./a.out

プログラムの実行後、ADC0834の3番目のピンとGNDに個別にリード線を配線し、それらを別々にバッテリーの2つの極に導く。LEDバーグラフの対応するLEDが点灯し、電力レベルが表示される(測定範囲:0〜5V)。

注釈

If it does not work after running, or there is an error prompt: "wiringPi.h: No such file or directory", please refer to Cコードが機能していませんか?.

コードの説明

void LedBarGraph(int value){
    for(int i=0;i<10;i++){
        digitalWrite(pins[i],HIGH);
    }
    for(int i=0;i<value;i++){
        digitalWrite(pins[i],LOW);
    }
}

この機能は、LED棒グラフの10個のLEDの点灯/消灯を制御するために機能する。これらの10個のLEDを最初にオフにするために高レベルを指定し、次に受信したアナログ値を変更することでいくつのLEDを点灯させるかを決定する。

int main(void)
{
    uchar analogVal;
    if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
        printf("setup wiringPi failed !");
        return 1;
    }
    pinMode(ADC_CS,  OUTPUT);
    pinMode(ADC_CLK, OUTPUT);
    for(int i=0;i<10;i++){       //make led pins' mode is output
        pinMode(pins[i], OUTPUT);
        digitalWrite(pins[i],HIGH);
    }
    while(1){
        analogVal = get_ADC_Result(0);
        LedBarGraph(analogVal/25);
        delay(100);
    }
    return 0;
}

analogValは、さまざまな電圧値(0-5V)で値(0-255)を生成する。たとえば、バッテリーで3Vが検出されると、対応する値 152 が電圧計に表示される。

LED棒グラフの10個のLEDはanalogVal測定値を表示するために使用される。255/10 = 25。したがって、25ごとにアナログ値が増加し、もう1つのLEDが点灯する。

Python言語ユーザー向け

ステップ2: コードのフォルダーに入る。

cd /home/pi/davinci-kit-for-raspberry-pi/python/

ステップ3: EXEファイルを実行する。

sudo python3 3.1.5_BatteryIndicator.py

プログラムの実行後、ADC0834の3番目のピンとGNDに個別にリード線を配線し、それらを別々にバッテリーの2つの極に導く。LEDバーグラフの対応するLEDが点灯し、電力レベルが表示される(測定範囲:0〜5V)。

コード

注釈

以下のコードを 変更/リセット/コピー/実行/停止 できます。 ただし、その前に、 davinci-kit-for-raspberry-pi/python のようなソースコードパスに移動する必要があります。

import RPi.GPIO as GPIO
import ADC0834
import time

ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]

def setup():
    GPIO.setmode(GPIO.BCM)
    ADC0834.setup()
    for i in ledPins:
        GPIO.setup(i, GPIO.OUT)
        GPIO.output(i, GPIO.HIGH)

def LedBarGraph(value):
    for i in ledPins:
        GPIO.output(i,GPIO.HIGH)
    for i in range(value):
        GPIO.output(ledPins[i],GPIO.LOW)

def destroy():
    GPIO.cleanup()

def loop():
    while True:
        analogVal = ADC0834.getResult()
        LedBarGraph(int(analogVal/25))

if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the program destroy() will be executed.
        destroy()

コードの説明

def LedBarGraph(value):
    for i in ledPins:
        GPIO.output(i,GPIO.HIGH)
    for i in range(value):
        GPIO.output(ledPins[i],GPIO.LOW)

この機能は、LED棒グラフの 10 個のLEDの点灯/消灯を制御するために機能する。これらの 10 個のLEDを最初に オフ にするために高レベルを指定し、次に受信したアナログ値を変更することでいくつのLEDを点灯させるかを決定する。

def loop():
    while True:
        analogVal = ADC0834.getResult()
        LedBarGraph(int(analogVal/25))

analogValは、さまざまな電圧値(0-5V)で値(0-255)を生成する。たとえば、バッテリーで3Vが検出されると、対応する値 152 が電圧計に表示される。

LED棒グラフの10個のLEDはanalogVal測定値を表示するために使用される。255/10 = 25。したがって、25ごとにアナログ値が増加し、もう1つのLEDが点灯する。

現象画像

_images/image249.jpeg