LEDを制御する部分を他のファイルに記述して、それをインポートして使用してみます。
今回は「led_test1.py」を基にして、「myled.py」というファイルでLEDを制御する部分を記述して、「led_test2.py」の中でインポートして使用するようにします。
import RPi.GPIO as GPIO
import time
# ピン番号
PIN_NO = 12
def main():
# ピン番号を使用
GPIO.setmode(GPIO.BOARD)
# 出力端子を設定
GPIO.setup(PIN_NO, GPIO.OUT)
# High(3.3V)で出力(点灯)
GPIO.output(PIN_NO, GPIO.HIGH)
# 5秒待機
time.sleep(5)
# Low(0V)で出力(消灯)
GPIO.output(PIN_NO, GPIO.LOW)
# GPIOをクリーンアップ
GPIO.cleanup()
if __name__ == "__main__":
main()
「myled.py」に「MyLED」という名前のクラスを定義します。
初期化する際に使用するピン番号を渡し、点灯する関数と消灯する関数を用意します。
「GPIO.setmode」と「GPIO.cleanup」はメインとなる「led_test2.py」で記述しますので、「myled.py」内では記述しません。
import RPi.GPIO as GPIO
class MyLED:
# ピン番号
pin_no = 0
# 初期化
def __init__(self, no):
self.pin_no = no
GPIO.setup(self.pin_no, GPIO.OUT)
# 点灯
def on(self):
GPIO.output(self.pin_no, GPIO.HIGH)
# 消灯
def off(self):
GPIO.output(self.pin_no, GPIO.LOW)
「led_test1.py」を書き換えて「myled.py」をインポートして使用できるようにします。
※「myled.py」は「led_test2.py」と同階層に置いてください。
import RPi.GPIO as GPIO
import time
import myled
# ピン番号
PIN_NO = 12
def main():
# ピン番号を使用
GPIO.setmode(GPIO.BOARD)
# LEDの変数を定義
led = myled.MyLED(PIN_NO)
# LEDを点灯
led.on()
# 5秒待機
time.sleep(5)
# LEDを消灯
led.off()
# GPIOをクリーンアップ
GPIO.cleanup()
if __name__ == "__main__":
main()
「GPIO.setmode」と「GPIO.cleanup」は全体に対して行われるのでメインに記述します。