gpiozeroライブラリ入門①import LED その1
使用環境
|
●import
待ち時間でよく使われるtime.sleep(1)は、モジュール(ライブラリ)をimportとするときに、書き方を2通り見かけます。
import time time.sleep(1) |
from time import sleep sleep(1) |
3.7.9のtimeモジュールは、こちら
に解説があります。この中に、
time.sleep(secs) 与えられた秒数の間、呼び出したスレッドの実行を停止
する関数があります。
from <モジュール名> import <オブジェクト名(関数や変数、もしくは関数と変数)> from time import sleep |
のように記述すると、インポートされるのは指定したオブジェクトのみになります。
from time import sleep as delay |
のように別名delayをつけることもできます。
このようにオブジェクト名を明示して利用するのは、大きなプログラムを作るときなど、メリットになるようです。
●gpiozeroはGPIOを制御する大きなライブラリ集
GPIOを使うとき、RPi.GPIOをよく使います。ベーシックな制御ができるのが特徴です。gpiozeroはベーシックなGPIOの制御とその使い勝手を上げたパッケージ(たくさんのライブラリ集)です。難点は、大きなモジュールなので、見通しが悪いことです。
最初は、GPIO17をON/OFFするためにLEDクラスを使います。LEDは、抵抗内蔵赤色LEDを次のようにつなぎます。
●プログラム
timeモジュールからは、sleepとtime関数の二つをimportしました。time関数は秒で時間を取得します。
gpiozeroパッケージからはLEDクラスをインポートしました。詳細はこちら。
GPIOピン番号は、デフォルトでBroadcom(BCM)番号付けを使用します。GPIO17は11番ピンです。
from gpiozero import LED from time import sleep,time led = LED(17) timeStart = time() while True: led.on() sleep(1) led.off() sleep(1) print('time:{0:.3f}'.format( time() - timeStart)) |
実行している様子です。LEDが1秒間間隔で点滅します。
print文のフォーマット{0:.3f}は、1番目の引数を0:で表現しています。引数(変数)の「 time() - timeStart」は1個しかないので、{:.3f}と0は省略できます。
.3fは、浮動小数点で、小数点第3位まで表示するという指定です。
引数が三つあれば、文字列部分は、
'xxx {0} yyy{1} zzz{2}' |
のように置換したい引数のインデックスを0から記述します。その文字列に続いて、.formatメソッドでは、
.format(3.14, "python", 100) |
のようにカンマで区切りながら引数を並べます。
{}内では書式の指定ができます。インデックス番号と書式を併用するときは : で区切ります。
{2} インデックス番号だけ {2:.2f} インデックス番号と小数第2位までの浮動小数点 {2:016b} インデックス番号とバイナリ表示で16桁、先頭の0は省略しない {2:16b} インデックス番号とバイナリ表示で16桁、先頭の0は表示しない {2:<16b} インデックス番号とバイナリ表示で16桁、先頭の0は表示しない。左詰め |
記号 | 型 |
---|---|
f | 小数点表記の浮動小数点 |
e | 指数表記の浮動小数点 |
d | 10進 |
b | 2進 |
x | 16進 |
文字列部分にインデックス番号は複数回記述しても、順序が入れ替わってもかまいません。記号のsはデフォルトの文字列で、省略できます。
print('{2:s} {0:d} 0b{0:b} 0x{0:x}'.format(100, "OK", "Decimal Binary Hex\n")) Decimal Binary Hex |
(2020/11/30追加)GPIOの各ピンの扱える電流はデフォルトで3mAです。設定により16mAまで増加できますが、すべてのGPIOピンを16mA流すことできません。「GPIO pads control」
gpiozero Copyright 2015-2020 Ben Nuttall