さまざまなセンサーからデータを読み込む arduino プロジェクトに取り組んでいます。値を取得して配列に格納します。問題は、センサー値を異なるレートで更新したいということです。たとえば、250ms ごとに更新するのではなく、50ms ごとに更新したいとします。しかし、センサーの更新の間に実行されるループにしたいと思います。私が考えることができる唯一の方法は、遅延を使用することですが、それによってループが停止します。
質問する
2575 次
3 に答える
2
読み取りたいセンサーごとに間隔を設定して、millis()関数を使用できます。ArduinoWebサイトのBlinkWithoutDelayの例をご覧ください
于 2012-07-25T15:08:57.343 に答える
0
チェックするセンサーがたくさんある場合は、Metro ライブラリを使用してコーディングを少し節約できます。BRMの回答と同じ一般的な概念。タイマー割り込みも使用できます。タイマー割り込みに関する多数の記事へのリンクを含む情報については、Move now, don't delay()ブログ投稿を参照してください。
于 2012-07-25T17:38:33.260 に答える
0
ライブラリを使用したくない場合は、次のように実装できます。
typedef void (*command)();
template <unsigned long wait_ms, command c>
void repeat() {
static unsigned long start = millis();
if (millis()-start >= wait_ms) {
start += wait_ms;
c();
}
}
void task1() {
// every 50ms
}
void task2() {
// every 250ms
}
void setup() {
}
void loop() {
repeat< 50, task1>();
repeat<250, task2>();
}
これは、ループ内で「ブロック」するものがない限り機能します。
于 2013-10-26T19:42:57.833 に答える