LoginSignup
1
0

More than 5 years have passed since last update.

Raspberry Pi(Raspbian)でLEDを点灯/消灯させるプログラムを作る

Posted at

はじめに

Raspberry Pi(Raspbian)でLEDを点灯/消灯させるプログラムの紹介です。

必要なもの

  • RaspbianがインストールされているRaspberry Pi
  • ブレッドボード
  • LEDx2
  • 抵抗(100Ω)x2
  • ジャンパー線(オス/メス)x3
  • ジャンパー線(オス/オス)x2

配線

GPIOとGNDならどこでも可ですが、今後の拡張性などを考えるとGPIOのみのピン(3, 5, 8, 10, 19, 21, 23, 24, 25以外)を使う方が無難だと思います。
この投稿では33(GPIO13), 35(GPIO19), 39(GND)ピンを使用しています。
DSC_0203.JPG
LED_ブレッドボード.png

プログラム

led.py
#Import Files
import RPi.GPIO as GPIO
import time

#GPIO Settings
GPIO.setmode(GPIO.BCM)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(19, GPIO.OUT)

#Main
try:
    while True:
        GPIO.output(13, GPIO.LOW)
        GPIO.output(19, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(13, GPIO.HIGH)
        GPIO.output(19, GPIO.LOW)
        time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()

解説

  1. スイッチの制御に使用するRPi.GPIOライブラリをインポートする
  2. 時間を取得するために使用するtimeライブラリをインポートする
  3. GPIOのモードをBCMに設定する(物理的なピン番号ではなく、GPIO**を使用する)
  4. GPIO13, GPIO19を出力端子に設定する(Hi=点灯, Low=消灯)
  5. LEDを点滅させ続けるのでwhile True:で無限ループさせる
  6. LEDを1秒周期で交互に点滅させる
  7. 解説6に遷移 or プログラムが終了するのを待つ
  8. Control+Cが押されたらGPIOを解放してプログラムを終了する

プログラムを実行してみる

  1. プログラムを実行する
  2. LEDが1秒周期で交互に点滅するDSC_0207.JPGDSC_0208.JPG

写真を撮るプログラムに組み込んでみる

以前作成した写真を撮るプログラムのcamera_func(x)にLEDの点灯/消灯処理を組み込んでみた。
DSC_0206.JPG
SW_LED_ブレッドボード.png

camera_v2.py
#Import Files
import RPi.GPIO as GPIO
import picamera
import time

#GPIO Settings
GPIO.setmode(GPIO.BCM)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(19, GPIO.OUT)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#Camera Settings
CAM_DIR  = "/home/pi/python/_photo/"

camera = picamera.PiCamera()

#Camera Function
def camera_func(x):
    if GPIO.input(26) == 0:
        GPIO.output(19, GPIO.HIGH)
        filename = time.strftime("%Y%m%d%H%M%S") + ".jpeg"
        save_dir_filename = CAM_DIR + filename
        camera.capture(save_dir_filename)
        GPIO.output(19, GPIO.LOW)
    else:
        GPIO.output(13, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(13, GPIO.LOW)

#Interrupt
GPIO.add_event_detect(26, GPIO.FALLING, callback=camera_func, bouncetime=200)

#Main
try:
    while True:
        pass

except KeyboardInterrupt:
    GPIO.cleanup()

変更前はスイッチを押しても写真を撮れているのかわからなかったが、変更後はスイッチを押した際、正常(写真が撮れている場合)なら緑色、異常(写真が撮れていない場合)なら赤色のLEDが点灯するので、何も無いよりはわかりやすくなった。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0