パルス検出について
- 以前の入力値を保持しておき、現在の入力値と比較しパルスの立上り(または立下り)を検出します。
- 検出時、積算値をインクリメントします。
ファイル出力について
- ファイルは追記モードで開いておきます。
- 前回の出力時刻を保持しておき、現在時刻と比較して指定時間が経過したら出力するようにします。
以下、概念コードです。
Python
1import time
2
3# 略。GPIOの初期化など
4#fp = open("cnt.txt","a") # 追記モードで開く
5
6VALS = (GPIO_HIGH,GPIO_LOW) = (1,0)
7prevVal = GPIO_LOW
8pulse_cnt = 0
9
10INTERVAL = 10 # ログ出力間隔 [sec]
11prevTime = time.time()
12
13try:
14 while True:
15 # GPIOなどから現在値を取得
16 curVal = int(input('input(0or1):'))
17 if curVal not in (VALS):
18 break
19
20 # パルスの立上り(LOW -> HIGH) を積算する
21 if prevVal == GPIO_LOW and curVal == GPIO_HIGH:
22 pulse_cnt = pulse_cnt + 1
23
24 prevVal = curVal
25
26 # 一定時間経過したら
27 curTime = time.time()
28 if (curTime - prevTime) > INTERVAL:
29
30 # 積算したパルス数をログファイルなどに出力
31 print('pulse_cnt',pulse_cnt)
32 #fp.write( '%d\n' % pulse_cnt)
33
34 prevTime = curTime
35 pulse_cnt = 0
36
37 time.sleep(0.1) # CPU負荷低減のため
38
39except(KeyboardInterrupt):
40 pass
41
42#fp.close()
43# 略。GPIOの後始末など
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/25 10:55 編集
2018/01/25 11:12
2018/01/25 15:41 編集
2018/01/28 10:02 編集