TOPに戻る

gpiozeroライブラリ入門②import LED その2

 LEDクラスの詳細です。
 クラスの中に複数のメソッドがあります。メソッドはクラス・オブジェクトとも呼ばれます。

クラス gpiozero.LED(pin, *, active_high=True, initial_value=False, pin_factory=None)

パラメータ: 
 pin (int or str) – GPIOピン
 active_high (bool) – アクティブHigh。True(デフォルト)、
FalseだとアクティブLow
 initial_value (bool or None) – デフォルトのFalseだとLEDは消灯。Tureでは点灯になる。Noneの場合、設定が出力になっていれば点灯する
 pin_factory (Factory or None) – APIの解説を読む

blink(on_time=1, off_time=1, n=None, background=True)

パラメータ: 
 on_time (float) – 点灯の時間。単位は秒。デフォルト1秒
 off_time (float) – 消灯の時間。単位は秒。デフォルト1秒
 n (int or None) – 点滅の回数。デフォルトのNoneは点滅はしない。
 background (bool) – デフォルトのTrueでは、すぐにバックグラウンド・スレッドで点滅を開始し、戻る。もしFalseであれば、点滅が終わったら戻るだけ。

off()

 デバイスの電源を切る。

on()

 デバイスの電源をONにする。

toggle()

 デバイスの状態を逆にする。ONになっている場合はOFFに、OFFの場合はONにする。

is_lit

 デバイスが現在アクティブな場合はTrueを返し、それ以外の場合はFalseを返す。このプロパティは通常、値から派生するが、値ではなく常にブール値。

pin

 デバイスが接続されているピン。 デバイスが閉じられている場合、これはNoneになる(close()メソッドを参照)。 GPIOピンを処理するときは、pin.numberを照会して、デバイスが接続されているGPIOピン(BCM番号付け)を見つける。

value

 デバイスが現在アクティブな場合は1を返し、それ以外の場合は0を返す。 このプロパティを設定すると、デバイスの状態が変更される。

 クラスはimportして利用します。メソッド(クラス・オブジェクト、関数、変数)は、クラス名にドットをつけてつなげます。

importの記述方法は複数ある

 LEDを点灯したいときの記述です。

import gpiozero

led = gpiozero.LED(17)
led.on()

 エディタでled = gpiozero.LEDを入力していると、LEDで始めるクラスもしくはモジュール名が表示されました。

 importのところをLEDクラスだけにします。こちらのほうが使いやすいですね。

from gpiozero import LED

led = LED(17)
led.on()

残りのクラス・オブジェクトを使う

 pinはピン番号なのでGPIO17、is_litとValueはLEDが点灯すれば'1'(True)です。
 toggleはONとOFFの状態を逆転させます。

from gpiozero import LED
from time import sleep

led = LED(17)

while True:
    print('---')
    led.on()
    print('ON    {} {} {}'.format(led.pin, led.is_lit, led.value))
    sleep(1)
    led.off()
    print('OFF   {} {} {}'.format(led.pin, led.is_lit, led.value))
    sleep(1)
    led.toggle()
    print('toggle {} {} {}'.format(led.pin, led.is_lit, led.value))
    sleep(1)
    led.toggle()
    print('toggle {} {} {}'.format(led.pin, led.is_lit, led.value))
    sleep(3.14)

 期待通りの状態になりました。

 blinkは、n=xで点滅回数xを指定できます。次のプログラムで確認をします。デフォルトで、点灯と消灯の時間はそれぞれ1秒です。5回の点滅には10秒かかります。

from gpiozero import LED
from time import sleep

led = LED(17)
led.off()
sleep(3)

while True:
    print('blink start')
    led.blink(n=5)
    print('{} {} {}'.format(led.pin, led.is_lit, led.value))
    sleep(15)

 「blink start」と表示した直後に「GPIO17 True 1」が表示されます。LEDの点滅は続いています。LEDの点滅は、別のスレッドで動作していることが確認できました。

gpiozero Copyright 2015-2020 Ben Nuttall 

連載 gpiozeroライブラリ入門

(1) LED その1 (2) LED その2 (3) PWMLED (4) RGBLED

(5) Buzzer (6) TonalBuzzer

(7) Motor その1 BD65496