コンテンツにスキップ

103 Button

注意

#FaBo 103 button は、抵抗が1Kのものをご使用ください。 茶、黒、赤、金(102)

接続

GPIOは4,5,6,12,13,16

FaBo #103 BUTTON Brickを使用してボタンがおしたら、LED点灯させます。 LED BrickをGPIO4に接続、BUTTON Brickは、GPIO5に接続します。

GPIOの判定

以下のコードは、ボタンが押されたのたえずチェックします。

# coding: utf-8
import Jetson.GPIO as GPIO
import sys

LEDPIN = 4
BUTTONPIN = 5

GPIO.setmode(GPIO.BCM)
GPIO.setup(LEDPIN, GPIO.OUT)
GPIO.setup(BUTTONPIN, GPIO.IN)

try:
    while True:
        # ボタン押下判定
        if( GPIO.input(BUTTONPIN)):
            # LED点灯
            GPIO.output(LEDPIN, True)
        else:
            # LED消灯
            GPIO.output(LEDPIN, False)
except KeyboardInterrupt:
    GPIO.cleanup()
    sys.exit(0)

GPIOの入力待ち

以下のコードはボタンがおされるまで待っています。

# coding: utf-8
import Jetson.GPIO as GPIO
import sys

LEDPIN = 4
BUTTONPIN = 5

GPIO.setmode(GPIO.BCM)
GPIO.setup(LEDPIN, GPIO.OUT)
GPIO.setup(BUTTONPIN, GPIO.IN)

try:
    while True:
        GPIO.wait_for_edge(BUTTONPIN, GPIO.FALLING)
        print("Button Pressed!")
        GPIO.output(LEDPIN, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(LEDPIN, GPIO.LOW)

except KeyboardInterrupt:
    GPIO.cleanup()
    sys.exit(0)

イベントとして取得

以下のコードは、処理中にボタンがおされたら、現在の処理を停止して、関数blinkを呼び、その関数の処理がおわったら、blink呼び出し前に戻ります。

# coding: utf-8
import Jetson.GPIO as GPIO
import sys

LEDPIN = 4
BUTTONPIN = 5

GPIO.setmode(GPIO.BCM)
GPIO.setup(LEDPIN, GPIO.OUT)
GPIO.setup(BUTTONPIN, GPIO.IN)

# blink LED 
def blink(channel):
    for i in range(5):
        GPIO.output(LEDPIN, GPIO.HIGH)
        time.sleep(0.5)
        GPIO.output(LEDPIN, GPIO.LOW)
        time.sleep(0.5)

GPIO.add_event_detect(BUTTONPIN, GPIO.FALLING, callback=blink, bouncetime=10)

try:
    while True:
        print("Loop")
        time.sleep(1)

except KeyboardInterrupt:
    GPIO.cleanup()
    sys.exit(0)