Raspberry Pi 3でLEDと戯れる

2016-07-10 01:39:15 (modified at 2018-07-11 16:52:19) · 404 words · 1 minute read RPi

まずは今回の回路図から。
Lkati.png
ブレッドボード上の左側の塊がLピカ/Lチカ/Lカチ全てに必要な回路で、右側はLカチに必要な回路。

Lピカ

LEDを単純に光らせる。以下のサンプルコードではコマンドライン引数で光らせる時間[s]を指定できるようにしている。

Lpika.py :

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import sys
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)

argvs = sys.argv
argc = len(argvs)

l = 0
if (argc > 1):
    try:
        l = float(argvs[1])
    except ValueError:
        print "数値を入力してください"

if (l > 0):
    do = True
    while do:
        GPIO.output(11, True)
        time.sleep(l)
        do = False

GPIO.cleanup()

Lチカ

LEDを点滅させる。以下のサンプルコードでは0.4秒間隔で10回点滅したら終了する。

Ltika.py :

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)

i = 0
while i < 10:
    GPIO.output(11, True)
    time.sleep(0.2)
    GPIO.output(11, False)
    time.sleep(0.2)
    i += 1

GPIO.cleanup()

Lカチ

スイッチのオンオフでLEDを制御する。ここでは敢えて一旦スイッチの情報をRaspberry Piに取り込んでからそれをLEDに伝搬させている。

Lkati.py :

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import RPi.GPIO as GPIO
import sys, time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN)
GPIO.setup(11, GPIO.OUT)

def overwrite(s):
    sys.stdout.write("\r\033[K" + s)
    sys.stdout.flush()

try:
    while True:
        if GPIO.input(12):
            GPIO.output(11, True)
            overwrite("On")
        else:
            GPIO.output(11, False)
            overwrite("Off")
        time.sleep(0.01)

except KeyboardInterrupt:
    pass

GPIO.cleanup()
tweet Share