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完了")