私的AI研究会 > プログラム演習
~/Programs/led.py # _*_ coding: utf-8 _*_ import time import RPi.GPIO as GPIO LED = 16 GPIO.setmode(GPIO.BCM) GPIO.setup(LED, GPIO.OUT) for i in range(3): time.sleep(0.5) GPIO.output(LED, GPIO.HIGH) print ("LED ON!") time.sleep(0.5) GPIO.output(LED, GPIO.LOW) GPIO.cleanup()※ Python3でも動作するように書籍の内容を一部修正
$ python led.py LED ON! LED ON! LED ON!
~/Programs/switch_led.py # _*_ coding: utf-8 _*_ import time import RPi.GPIO as GPIO LED = 16 BUTTON = 20 GPIO.setmode(GPIO.BCM) GPIO.setup(LED, GPIO.OUT) GPIO.setup(BUTTON, GPIO.IN) GPIO.add_event_detect(BUTTON, GPIO.FALLING) while True: if GPIO.event_detected(BUTTON): GPIO.output(LED, GPIO.HIGH) print ("Switch ON!") time.sleep(0.5) GPIO.output(LED, GPIO.LOW) else: print ("OFF") time.sleep(1) GPIO.cleanup()※ Python3でも動作するように書籍の内容を一部修正
$ python switch_led.py OFF OFF OFF OFF Switch ON! OFF OFF Switch ON! OFF ^CTraceback (most recent call last): File "switch_led.py", line 23, in <module> time.sleep(1) KeyboardInterrupt
無限ループのプログラムなので、Ctrl-z でプログラムを終了する。 再開は「fg」コマンド。
~/Programs/switch_speaker.py # _*_ coding: utf-8 _*_ import time import RPi.GPIO as GPIO import os LED = 16 BUTTON = 20 GPIO.setmode(GPIO.BCM) GPIO.setup(LED, GPIO.OUT) GPIO.setup(BUTTON, GPIO.IN) GPIO.add_event_detect(BUTTON,GPIO. FALLING) hold_time = 1.5 sound_dir = "/home/pi/Programs/sound/" while True: if GPIO.event_detected(BUTTON): GPIO.remove_event_detect(BUTTON) now = time.time() count = 0 GPIO.add_event_detect(BUTTON, GPIO.RISING) while time.time() < now + hold_time: if GPIO.event_detected(BUTTON): count += 1 time.sleep(.5) print count if count <> 0: sound_file = "1" else: sound_file = "0" GPIO.output(LED, GPIO.HIGH) os.system("aplay " + sound_dir + sound_file + ".wav") GPIO.output(LED, GPIO.LOW) GPIO.remove_event_detect(BUTTON) GPIO.add_event_detect(BUTTON, GPIO.FALLING) GPIO.cleanup()※ 書籍の内容を一部修正