プロジェクト2: テーブルランプ
説明
一般的なテーブルランプはLEDとボタンを使い、ボタンを押すことでランプのオン/オフを制御できます。
ボタンの原理
ボタンモジュールはデジタルセンサーで、0か1しか読み取れません。モジュールが押されていないときは高レベル(1)で、押されると低レベル(0)になります。

ボタンのピン
ボタン1 |
16 |
|---|---|
ボタン2 |
27 |
プロジェクト2.1 ボタンの読み取り
説明
ボタンの状態値を読み取り、それをシリアルモニタに表示して直感的に確認します。
テストコード
from machine import Pin
import time
button1 = Pin(16, Pin.IN, Pin.PULL_UP)
button2 = Pin(27, Pin.IN, Pin.PULL_UP)
while True:
btnVal1 = button1.value() # Reads the value of button 1
btnVal2 = button2.value()
print("button1 =",btnVal1) #Print it out in the shell
print("button2 =",btnVal2)
time.sleep(0.1) #delay 0.1s
テスト結果
実行ボタンをクリックすると、button1とbutton2の状態値がシェルに表示されます。スマートホームのボタンを押すと、状態値の変化が確認できます。

プロジェクト2.2 テーブルランプ
説明
一般的なシンプルなテーブルランプは、ボタンを押すと点灯し、もう一度押すと消灯します。
テストコード
ボタンが押された回数を数え、2で割った余りをとることで、0または1の2状態を得ることができます。
from machine import Pin
import time
button1 = Pin(16, Pin.IN, Pin.PULL_UP)
led = Pin(12, Pin.OUT)
count = 0
while True:
btnVal1 = button1.value() # Reads the value of button 1
#print("button1 =",btnVal1) #Print it out in the shell
if(btnVal1 == 0):
time.sleep(0.01)
while(btnVal1 == 0):
btnVal1 = button1.value()
if(btnVal1 == 1):
count = count + 1
print(count)
val = count % 2
if(val == 1):
led.value(1)
else:
led.value(0)
time.sleep(0.1) #delay 0.1s
テスト結果
シェルにはボタンが押された回数が表示されます。ボタンを1回押すとLEDが点灯し、もう1回押すと消灯します。
