土地形状スキャン021 [FriendlyCore編]ノーマルのLEDとタクトスイッチを使ったUIの作成

造成

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が点滅し、スイッチを押すごとに点滅・消灯を繰り返すことを確認。

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