プログラマブルボタンをつかってみる#03

CircuitPython

Maker Pi RP2040にはGP20とGP21にプログラムで使うことができるボタンを割り当てています。次のサンプルプログラムをうごかしてみましょう。

#BUTTONを使ったCircuitPythonサンプルプログラム

import time
import board
import digitalio

# Initialize LEDs
# LEDs placement on Maker Pi RP2040
LED_PINS = [board.GP0, 
            board.GP1,
            board.GP2,
            board.GP3,
            board.GP4,
            board.GP5,
            board.GP6,
            board.GP7,
            board.GP16,
            board.GP17,
            board.GP26,
            board.GP27,
            board.GP28]

LEDS = []
for pin in LED_PINS:
    # Set pins as digital output
    digout = digitalio.DigitalInOut(pin)
    digout.direction = digitalio.Direction.OUTPUT
    LEDS.append(digout)

# BUTTON(GP20,GP21)をイニシャライズする
btn1 = digitalio.DigitalInOut(board.GP20)
btn2 = digitalio.DigitalInOut(board.GP21)
btn1.direction = digitalio.Direction.INPUT
btn2.direction = digitalio.Direction.INPUT
btn1.pull = digitalio.Pull.UP
btn2.pull = digitalio.Pull.UP

while True:
    # button 1 (GP20)をチェック中
    if not btn1.value:  # button 1 が押されたら
        #  all LEDsを点灯へ
        for i in range(len(LEDS)):
            LEDS[i].value = True
            time.sleep(0.1)
    # button 2 (GP21)をチェック中
    elif not btn2.value:  # button 2が押されたら
        # all LEDsを消灯
        for i in range(len(LEDS)):
            LEDS[i].value = False
            time.sleep(0.15)
スポンサーリンク

BUTTON(GP20,GP21)をイニシャライズする

変数btn1にGP20を、btn2にGP21をDigitalInOutモードにして格納します。そしてINPUTモードに指定。そしてPull.UPモードにすると入力モードになりスイッチとして使えるようになります。

REPLモードでみてみましょう。

>>> import board
>>> import digitalio
>>> btn1 = digitalio.DigitalInOut(board.GP20)
>>> btn1.direction = digitalio.Direction.INPUT
>>> btn1.pull = digitalio.Pull.UP
>>> btn1.value
True
>>> btn1.value
False
>>> 

TrueとFalse

btn1.valueというコマンドはbtn1の値を調べます。何も押さずにbtn1.valueとするとTrueが出力されます。今度は20番スイッチを押しながらbtn1.valueを押すとFalseが返ってきます。Trueとはなんでしょう?真実?ここでは正常状態であることを示すTrueであると考えましょう。ボタンが押された場合異常状態であるためFalseという値を示すのです。

if文で条件分岐させる

REPLモードにしてみましょう

>>>a = 5
>>>if a <3 :
...       print('hello')
...

>>>if a < 6:
...       print('hello'):
...
hello
>>>if a==6:
...       print('hello')
...

>>>if a==5:
...       print('hello')
...
hello

1つ目のifのあとはhelloが表示されません。aには5が代入されています。aは3よりも小さくないので条件に当てはまらないのです。次のif文だと6よりは小さいので今度はhelloと印字されます。等しいときにだけのときには==を使います。a=6というコマンドは代入されてしまいpythonが混乱してしまうので注意してください。あとは<=や>=も使います。以下のとき、以上のときですね。

>>>a = 2
>>>if not a==2:
...       print('x')
...
>>>if not a==3:
...       print('x')
...
x

if notはちがったら

もしaが2ではなかったらxをプリントしてください。という命令です。もちろんなにもプリントされません。つぎaは3ではないのでxがプリントされます。if~notはTrueでなければ以下の処理を実行します。

タイトルとURLをコピーしました