0%

ボタンでプログラムを実行する

ボタンでプログラムを実行するサンプル。

ボタンを押すと、プログラムを実行する。

もう一度ボタンを押すと、プログラムを終了する。

このサンプルでは、「Raspberry Pi で LED を点滅させる」のスクリプトを実行する。

配線図

run-program-with-button.png

  • ジャンパー ワイヤー (赤): BCM17 (ピン番号 11)
  • ジャンパー ワイヤー (黒): GND

スクリプト

launcher.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/python
# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO
import subprocess

PIN = 17
CMD = "/home/pi/bin/ledblink.py" # 実行するプログラム

GPIO.setmode(GPIO.BCM)

# プルアップ抵抗を有効にする
GPIO.setup(PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

p = None

try:
while True:
# 立ち下がりエッジが検出されるまで待機する
GPIO.wait_for_edge(PIN, GPIO.FALLING)

if p is None:
# プログラムを実行する
p = subprocess.Popen("exec " + CMD, shell=True)
else:
# プログラムを終了する
p.kill()
p = None
except KeyboardInterrupt:
# Ctrl-C
GPIO.cleanup()

ボタンでプログラムの実行と終了

以下のコマンドでスクリプトを実行してからボタンを押すと、プログラムが実行される。

1
2
$ chmod u+x launcher.py # 実行権限を付与
$ ./launcher.py # 実行

もう一度ボタンを押すと、プログラムが終了する。

Ctrl-C でスクリプト自身を終了する。