質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

3回答

6265閲覧

Arduinoのpulsein関数で使用出来るピンについて

nullsan

総合スコア20

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

1グッド

0クリップ

投稿2019/11/14 23:20

いつもお世話になっております。

現在ArduinoUNOでPLUSEIN関数を使用しています。
使用ピンは13番です。

インターネットでPLUSEIN関数で使用できるピンとしてPWM機能のあるピンと書かれていた記憶があるのですが、やはりPWMピンでないと動作しないのでしょうか?

今のところ13ピンでも動いていますが、タイムアウトを100msとしても70msでタイムアウトしてしまったり動作が不安定です。

ご回答よろしくお願いします

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

動作がわからないときは、その関数のソースコードを読みましょう。

まあ、ぐぐったら、ソースコードの解説ページもでてきます
pulseIn()

前に私は、タイマを使って時間計測しているんであろう、と書きましたが、ソースを見るとこれが間違いであることがわかります

なんと、プログラムループで命令のクロック数から時間換算しているのです!(どっひゃー)
これだと割り込みがかかるのはダメ、クロック周波数変わるとダメ、CPU変わるとダメ、という移植性まるっきりダメダメなコードとなってます

ということで、使用するピンは、GPIOのどのピンでも計測可能となってますね

投稿2019/11/14 23:33

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nullsan

2019/11/14 23:37

y_waiwaiさん いつも有益な情報ありがとうございます。 なんとまぁ、そんな仕組みだったのですね! タイムアウトが正確じゃない理由もわかった気がします。 ソースコードをみても理解できないので、理解できるよう勉強重ねていきます。
guest

0

pulseInLong() は、micros() で時間測定しています
割り込み処理、割り込み禁止状態では micros() がカウントしない為 使えません

定期的に計測するなら、タイマ1、タイマ2 割り込みで計測フラグをセットして
メイン処理で計測フラグが立っていたなら、pulseInLong() で計測しフラグをクリアして次回測定に備えます

投稿2019/11/15 08:39

koujikuu

総合スコア401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

arduino 13pin には、LED が接続されている為 入力ポートとして使うには注意が必要です
参考 LINK
旧arduino回路図
純正品では、LED にバッファが入り改良されています

また割り込みの影響を受けない pulseInLong() 関数も提供されています
Reference pulseInLong()

投稿2019/11/15 05:38

koujikuu

総合スコア401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nullsan

2019/11/15 07:24

ご回答をありがとうございます。 割り込みの影響を受けないというのは、例えばPulseInLong関数実行中にtimer1やtimer2の処理が割り込んでも割り込みかからず処理が終ってから割り込みがかかるという認識で間違いないでしょうか? 定時でパルスインのデータを取りたいのですが、たとえばtimer1を100ms、timer2を1000msにして それぞれのルーチン内でPulseInLong関数を呼び出して利用する、ということも可能なのでしょうか。 お時間あればお答えいただけると幸いです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問