Arduinoは切断されたピンに入力値を持っています


9

Arduinoは初めてです。たぶん基本的な質問です...

このプログラムをロードすると:

int mval = 0;
void setup() {
  Serial.begin(9600);
  // set up the LCD's number of columns and rows: 

}

void loop() {

  mval = analogRead(1);
  Serial.println(mval);

  delay(1000);
 }

300と400の間で変化する値を取得します。0にする必要があると思うときは、その入力に何も接続されていないということです。

何か案は??USB経由でラップトップに接続されているarduino UNOです。


回答:


12

「フローティング入力」と呼ばれるものを取得しています。考えてみると、入力を測定するための理想的なデバイスは非常に高い入力インピーダンスを持っているため、ピンからあまり電気を取り除かないでしょう。

何が起こるかというと、ランダムな電子がピンに(または環境から)浮遊します(環境内の電磁干渉から、またはわずかな電荷を持つ何かとの直接の接触から)。グラウンド、この電荷は非常にゆっくりと排出されます。したがって、それを測定すると、そこに電圧がかかっているように見えます。一般に、これを電圧を提供するデバイスに接続するか、プルアップまたはプルダウン抵抗を挿入して、そのピンの期待値を調整します。

私はそれが役に立てば幸いです、そして誰かがこの質問にもっと有能に答えた別の人へのリンクを持っていると確信しているなら(私は関連セクションで少なくとも1つのほぼ同一の質問を見ます)。


5
面白い事実:ArduinoのドキュメントではanalogRead、未使用のピンの呼び出しの戻り値をrandomSeed関数のシードとして使用することを推奨
Chris Laplante

2
ハ!それはかなりきちんとしています、私はそれが好きです!60Hzのアンテナ長(米国の懸念のみ)を回避している限り、ブレッドボードやPCBに少し波線のワイヤーを追加すると、少しランダムになるのではないかと思います(突然ACノイズが支配的になります)
キットScuzz

3
より堅牢な(そしてスペースを節約する)アプローチは、RFC 1149.5標準の乱数ジェネレーター
Chris Laplante

4

入力は「フローティング」です。電圧を何らかの方法で「プル」するために接続されているものがないためです。
これは完全に正常です。高インピーダンスのプルダウン抵抗(たとえば10k)をピンからグラウンドに接続すると、何も接続されていないときにこれを停止します(何も接続されていないときに読み取る必要がないため、実際にそうする必要はありません)。接続されている;-))


ADCに接続されている場合、プルダウン抵抗は信号を変更しますか?
user30878 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.