RaspberryPiの基礎の基礎2

はじめに

「RaspberryPiの基礎の基礎1」では,取りあえずラズパイでLEDの点滅をさせました。今回はざっくりとソースコードの意味をブロック毎に分けてメモしたいと思います。コードの詳細な意味はまた今度ということにします。
▼前回
katsuyanote.hatenablog.com

目次

ソースコード

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) 
GPIO.cleanup()
print("GPIO clean完了")
GPIO.setup(17,GPIO.OUT)

def main(): 
    while True:
        GPIO.output(17,GPIO.HIGH)
        sleep(0.5)
        GPIO.output(17,GPIO.LOW)
        sleep(0.5)

if __name__ == '__main__':  
    try:     
        main() 
    except KeyboardInterrupt:
    print("終了処理中...")
        pass
    finally:
        GPIO.cleanup()
    print("GPIO clean完了")

4つのポイント

上記のソースコードのポイントは下記の4つです。

①import文と呼ばれて,ライブラリ(パッケージ・モジュール)を使用する為の宣言
②GPIOピンの設定等の初期化
③メイン文
④メイン文の実行命令とプログラム終了命令

①import文について

ラズパイのGPIOピンをコード上でGPIOとして記述する宣言と,sleepモジュールを使う宣言を行っています。今回はこれだけですが,他にもラズパイのシステムを操作する,カメラを操作する,PWM波を使用するなど様々なモジュールが用意されています。必要に応じてimportします。尚,一行目はutf-8で書いていますというメモです。

//1:
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep

②GPIOピンの設定等の初期化について

ラズパイのピンをGPIOというピン名称で設定をして,GPIOピンの初期化をしています。初期化を行わないと,エラーがでる可能性があります。

//5:
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) 
GPIO.cleanup()
print("GPIO clean完了")
GPIO.setup(17,GPIO.OUT)

③メイン文について

main()という関数を定義して,メイン文としています。この部分がLEDの点灯と消灯を0.5秒間隔で繰り返しなさいという命令となっています。簡単に説明すると,while文で永久ループとして,GPIO17ピンの出力(output)をHighとLowを交互に出させています。その間隔はsleep関数というプログラム一時停止時間(0.5秒)となっています。

//11:
def main(): 
    while True:
        GPIO.output(17,GPIO.HIGH)
        sleep(0.5)
        GPIO.output(17,GPIO.LOW)
        sleep(0.5)

④メイン文の実行命令とプログラム終了命令

ざっくりいうと,プログラムが実行されたら,main()関数を実行してくださいということです。そして,main()関数実行中にキーボードからの操作(Ctrl+C)を検出すれば,GPIOピンの初期化をしてプログラムを終了させるということです。このコードは大抵このまま使用しても問題ないと思います。ただし,GPIOピンを使用しない場合は,25・26行目は不要となります。

//18:
if __name__ == '__main__':  
    try:     
        main() 
    except KeyboardInterrupt:
    print("終了処理中...")
        pass
    finally:
        GPIO.cleanup()
    print("GPIO clean完了")