0

マイクロコントローラーは初めてで、電圧を読み取ってシリアルモニターに出力するのに助けが必要です。ポテンショメータを使用してこれを行いましたが、電圧だけで同じことができるかどうか疑問に思っていました. 以下は、ポテンショメータの値を読み取るときに使用したコードです。

電圧を読み取ろうとしましたが、ピン A0 に 3 ~ 5V より小さい電圧を入力すると、シリアル モニタで 0 が表示されます

int potPin = 0;    // select the input pin
int val = 0;       // variable to store the value coming from the function generator
void setup()
{
  Serial.begin(9600);   // opens serial port, sets data rate to 9600 bps
}
void loop() {
  val = analogRead(potPin); // read the value from the function generator
  Serial.println(val);
  delay(1000); //Sampling rate for the signal
}
4

3 に答える 3

0

map 関数を使用して 0 から 5 または 1-5v の入力をスケーリングしてみてください。

int setValue = map(ana1Value, 0, 1023, 0, 100);

あなたの助けになるかもしれません。

アナログ入力電圧はスケーリングされた0-100であり、それで作業できます

于 2014-08-01T03:19:32.747 に答える
0

あなたの質問に答えるために、はい、別のハードウェアから電圧を読み取ることができます。

ギアボットが言うように、arduino と他のハードウェアの間で共通の基盤を維持することが重要です。

また、arduino は 0 ~ 5 ボルトの電圧しか測定できないことに注意してください。arduino ボードを破壊する可能性があるため、回路を調整せずにより高い電圧を測定しようとしないでください。

よくわからない場合は、Arduino にマルチメーターを取り付ける前に電圧を測定してください。

Uno には、A0 から A5 までのラベルが付いた 6 つのアナログ入力があり、それぞれが 10 ビットの分解能 (つまり、1024 の異なる値) を提供します。デフォルトでは、グランドから 5 ボルトまでを測定しますが、AREF ピンと analogReference() 関数を使用して範囲の上限を変更することは可能です。

編集:

投稿の下部に追加されたコメントが表示されませんでした。これは確かにハードウェアの問題を示しています (おそらく回路内)。

arduino が正しく動作していることを確認するには、ハードウェアが接続されて動作している間に、ピン A0 と GND の間の電圧をマルチメーターで測定します。そこで正しい電圧を読み取ることができるはずです。

Arduinoと同じ値になると思います。次に、マルチメーターを使用して回路をトレース バックし (GND を接続したまま)、問題が発生している場所を見つけます。

于 2013-11-04T09:15:19.427 に答える