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ライブラリ入門

- OutputDevice -

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

(5) Buzzer (6) TonalBuzzer

(7) Motor その1 BD65496 (8) その2 TB67H420FTG (9) その3 TB6612 (10) その4 MC33926 (11) PhaseEnableMotor DRV8835

(12) Servo (13) AngularServo