[Python] 他のファイルをインポートして使用する

投稿者: | 2022-09-25

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」は全体に対して行われるのでメインに記述します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です