(1)質問の大枠内容
Raspberry Pi Zeroを用いてセンサデータ(これは取得できています)を一定時間間隔で取得する方法を教えてください。開発環境はPython2.7系です。RPI.GPIO、WiringPiライブラリともに利用可能な前提です。
(2)前提、当方の状況など
**(A)**time.sleep関数を用いた場合は、他の処理の影響によって正確な時間間隔での取得が困難であり、この方法は除外します。
**(B)**割り込み(コールバック関数)を利用する方法は、WEBサイトなどでも紹介されているのですが、ピンへの入力に対する割り込みになっています。
GPIO.add_event_detect(pin, GPIO.RISING, bouncetime=1000)
などがその一例と思います。しかし、これは一定時間間隔を指定するものではありません。
**(C)**wait for edge関数なるものがあり、これを用いるとタイムアウト設定した時間経過と、割り込みが来た時にイベント待ちが解除されるということなので、例えば
import RPi.GPIO as GPIO pin = 4 GPIO.setmode(GPIO.BCM) GPIO.setup(pin, GPIO.IN, GPIO.PUD_UP) try: while(True): isr = GPIO.wait_for_edge(pin, GPIO.FALLING, timeout=50) if isr is None: print("100msec Interrupt nothing") else: print("Interrupt") except KeyboardInterrupt: pass GPIO.cleanup()コード
と記述すれば、常にピンに一定電圧を加えることによって、等価的には50ms間隔での処理("50msec Interrupt nothing"の表示)ができますが、ピンへの電圧入力が必要になります(50msの確認は行っていません)。
(3)具体的な質問
マイコンではタイマ割り込みがあり、これを用いることによって一定時間間隔での処理が可能になりますが、これと同じような機能はどのようなコードになるのでしょうか?
**具体的に、50msの時間間隔でHello Worldを出力するという、サンプルコードはどうなるのでしょうか? **
Raspberry PiでPythonを用いた場合は、タイマ割り込みのような機能は実装できない、という解を含めて、ご教示いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/27 08:22
2020/03/27 08:31
2020/03/27 08:39