2

次のコードを使用すると、次のようなログが得られます。何故ですか?

int analogPin = 5;
int val = 0;

void setup(void) {
   Serial.begin(9600);
}

void loop(void) {
   val = analogRead(analogPin);
   Serial.print("Analog reading = ");
   Serial.println(val);   
}

結果:

Analog reading = 998
Analog reading = 981
Analog reading = 511
Analog reading = 159
Analog reading = 24
Analog reading = 108
Analog reading = 439
Analog reading = 946
Analog reading = 1023
Analog reading = 420
Analog reading = 116
Analog reading = 25
Analog reading = 151
Analog reading = 542
Analog reading = 997
Analog reading = 982
Analog reading = 513
Analog reading = 161
Analog reading = 25
Analog reading = 107
Analog reading = 437
Analog reading = 945
Analog reading = 1023
Analog reading = 421
Analog reading = 117
Analog reading = 25
Analog reading = 150
Analog reading = 541
Analog reading = 997
Analog reading = 983
Analog reading = 515
Analog reading = 162
Analog reading = 25
Analog reading = 107
Analog reading = 437
Analog reading = 945
Analog reading = 1023
Analog reading = 422
Analog reading = 117
Analog reading = 25
Analog reading = 149
Analog reading = 540
Analog reading = 997
Analog reading = 983
Analog reading = 516
Analog reading = 162
Analog reading = 25
Analog reading = 107
Analog reading = 436
Analog reading = 945
Analog reading = 1023
Analog reading = 422
Analog reading = 117
Analog reading = 25
Analog reading = 150
Analog reading = 540
Analog reading = 998
Analog reading = 982
Analog reading = 516
Analog reading = 162
Analog reading = 25
Analog reading = 108
Analog reading = 437

結果は単なるノイズですか?

そして、ケーブルを差し込むとすぐに、次のパターンが表示されます。

Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 72
Analog reading = 447
Analog reading = 1023
Analog reading = 1023
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 118
Analog reading = 849
Analog reading = 1023
Analog reading = 835
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 40
Analog reading = 401
Analog reading = 1023
Analog reading = 1023
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 0
Analog reading = 89
Analog reading = 475
Analog reading = 1023
Analog reading = 1023

それは私のハートビートかそこらですか?空のピンに何がそのような影響を与えることができるのか分かりません。

4

3 に答える 3

4

はい、接続されていないアナログ ピンがランダム ノイズを生成するのはごく普通のことです。ドキュメントから(強調鉱山):

によって生成される一連の値random()が異なることが重要な場合は、スケッチの後続の実行時に、未接続のピンでの analogRead() などrandomSeed()のかなりランダムな入力で乱数ジェネレーターを初期化するために使用します。

ケーブルを接続したときに表示される値に関して、意味があるかどうかは、ピンに供給する信号によって異なります。矛盾がある場合は、オシロスコープで信号を調べる価値があるかもしれません。

また、実際の入力が存在しない場合、analogRead が 0 から 1023 までの振動値を読み取るのはなぜですか?も参照してください。

于 2012-05-13T08:56:02.667 に答える
1

そのフローティング入力。ピンが何にも接続されていないか、5Vソースに直接接続されている場合。arduinoボタンのチュートリアルではこれについて少し説明しています。詳細については、ウィキペディアのプルアップ抵抗のページをご覧ください。

于 2012-05-14T07:06:52.280 に答える
0

私はPPGセンサーボードとArduino Megaを持っています。キットであなたのコードを試しました。PPG センサー ボードが心拍数を検出すると、すべてゼロに変わり始めます。シリアルモニタ出力について説明します。最初はどこも0です。私の心拍数が検出されました。現在は 0 ではありません。代わりに数字でいっぱいです。これらはノイズだけではありません。これらは、現在のノイズ + 実際の心拍数です。Arduino は、その検出周波数でグラフィカルなピークを示していると思います。

于 2013-12-02T20:56:25.597 に答える