UI部作成について、シリアルLEDでの表示を諦め、通常のLEDでの点滅表示に変更して続行。
UI部ハード構成
接続:
NanoPiNEO Pin11(GPIOA0) – LED
NanoPiNEO Pin15(GPIOA3) – タクトスイッチ
ピン設定
GPIOA0 出力 PWM
GPIOA3 入力
LEDとスイッチの動作確認用プログラム
GPIOの動作の確認を行うための簡単なプログラムを作成。
LED点滅で装置の状態を表し、スイッチ押下により状態を変化させるプログラムとなっている。
$ vi work_ledctrl_002.py
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
#PA0
PIN_NUM_LED = 11
#PA3
PIN_NUM_SWITCH = 15
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN_NUM_LED, GPIO.OUT)
GPIO.setup(PIN_NUM_SWITCH, GPIO.IN, pull_up_down=GPIO.PUD_UP)
pwm = GPIO.PWM (PIN_NUM_LED,2)
pwm.start(50)
state=0
try:
while True:
if GPIO.input(PIN_NUM_SWITCH)==0:
time.sleep(1) #0.1s wait
if state%2==0:
#duty rate 0 -> stop
pwm.ChangeDutyCycle(0)
else:
pwm.ChangeDutyCycle(50)
state+=1
except KeyboardInterrupt:
pass
pwm.stop()
GPIO.cleanup()
解説メモ
pwm.ChangeDutyCycle(duty)
pwm動作中にduty比を変更するためのメソッド
単位は%
duty=0でpwmピンはL固定となる
GPIO.setup(PIN_NUM_SWITCH, GPIO.IN, pull_up_down=GPIO.PUD_UP)
スイッチに接続する入力ピンは内部プルアップ設定とする
この設定にして、スイッチのもう片方がGNDに接続せてていれば、スイッチが押されていないときはH、押されている時はLとなる。
pwm = GPIO.PWM (PIN_NUM,freq)
freqで指定された周波数値でPWM生成するオブジェクトを返す
実行
$ sudo python3 work_ledctrl_002.py
実行後LEDが点滅し、スイッチを押すごとに点滅・消灯を繰り返すことを確認。