Arduino analogRead()はシリアル経由で印刷するとジャンクを返します

StackOverflow https://stackoverflow.com/questions/1013936

  •  06-07-2019
  •  | 
  •  

質問

Arduinoで時計を作っています。時間を設定するボタンを作りたいです。 そのため、テストするために、アナログ入力ピン0にワイヤを接続し、2行のコードを書いてピンを読み取ってシリアル経由で印刷しましたが、得られるのはすべてジャンクです。

  valm = analogRead(0);
  Serial.println(valm);

シリアルモニターから得られるものは次のとおりです。     ?j?d?±µ?Ê ?? jDd?±µ ???º jRd?±µ ??? º j?d?±µ?Ê ?? j?d?±µ?É?ª jRd?&#177 ;µ ???Ê jRd?±µ ??? j?d?±µ ???? j?d?& #177;µ?É ?? j     Rd?±µ ???? j?d?±µ ???º j?d?±µ?É ?? jRd?±µ ???? j?d?±µ?Ê?Ê jDd?±µ ?? ? j?d?±µ ???? j?d?±µ?É ?? jRd?±µ ???? j?d     ?±µ?É? jRd?±µ ???Ê j?d?±µ ?? ?ª j?d?±µ?Ê?Ê j $ d?±µ ??? jRd?&# 177;µ ???? j?d?±µ ???? jdd?±µ ???? jRd?±µ ??? j?d?±     µ?É?Ê jRd?±µ ???? j?d?±µ?Ò?Ê j?d?±µ?É? jRd?±µ ???? j?d?±µ ?? ?? j?d?±µ?É ?? jRd?±µ ??? j?d?±µ ???Ê j?d?±&#181 ;?     ??ª j?d?±µ ???Ê j?d?±µ ??? jRd?± µ ???? j?d?±µ ???? j?d?±µ?É ?? jRd?±& #181; ??? j?d?±µ?Ò?Ê j?d?±µ?&#201 ;? ª j?d?±µ?&#201 ;?     ?jTd?±µ ??? j?d?±µ ???? j?d?±µ?&#201 ; ?? jRd?±µ ???? j?d?±µ?É? jRd?±&#181 ;? ??Ê j?d?±µ?É?ª jRd?±µ ???Ê j?d?& #177;µ ???º j     ?d?±µ?È ?? jTd?±µ ???? jRd?±µ ???ª j ?d?±µ?È? jTd?±µ?É?Ê jRd?±&#181 ; ???ª j?d?±µ ???Ê j?d?±µ ???º j?d? ±µ?É ?? jRd     ?±µ ???Ê j?d?±µ ???ª j?d?±µ?&# 201;? jPd?±µ ???Ê j?d?±µ ???ª j?d?&#177 ;µ?Â?Ê j?d?±µ?É?º jRd?±µ ??? ?j?d?±µ?É ?? jRd?±     µ ???ª j?d?±µ?Ê? j?d?±µ ???&# 202; jRd?±µ ???ª j?d?±µ?Ò?Ê j?d?±& #181; ???º jRd?±µ ???? j?d?±µ ???Ê j?d?&#177 ;µ?Ê?ª jdd?±&#181 ;?     ?? jRd?±µ ??? j?d?±µ?É?ª jPd?&#177 ;µ ???Ê j?d?±µ ???? j?d?±µ?É ?? jRd?& #177;µ ???Ê j?d?±µ?É?ª jdd?±µ ???& #194; jRd?±µ ???     Â j?d?±µ?É?ª jDd?±µ ???Ê j?d?&#177 ;µ?Ê ?? j?d?±µ?É ?? jRd?±µ ???Ê jRd? ±µ ???ª j?d?±µ?Ê? jPd?±µ ???  j?d?±µ ???ª j     ?d?±µ?É?Ê jdd?±µ?É ?? jRd?±µ ?? ?? j?d?±µ?É?Ê j $ d?±µ ???ª jRd?±& #181; ??? j?d?±µ?Â? jTd?±µ ???ª j ?d?±µ ???Ê j?d     ?±µ ???? jRd?±µ ???? j?d?±µ?É?Ê jTd ?±µ ???ª jRd?±µ ??? j?d?±µ ???&# 194; j?d?±µ?É?ª jRd?±µ ???Ê jRd?±&#181 ;?Ò ?? jTd?±     µ ???? j?d?±µ ???Ê j

なぜ?


編集:

デジタルピン0を出力に設定しましたが、おそらくそれが問題だと思ったので、ArduinoのWebサイトにアクセスして アナログ入力ピン

だから私は彼らが言うアナログ入力ピン0であるピン14から読み込もうとしましたが、同じ出力を得ました。

ところで、私はアナログのみのピンから読み込もうとしています。

役に立ちましたか?

解決

Arduino Webサイトにあるこのサンプルコードを実行してみてください。変数 valm などを変換する必要はありません。

/*
  Analog input

    Reads an analog input on analog in 0, and prints the value out.

    Created 24 March 2006
    by Tom Igoe
*/

int analogValue = 0;    // Variable to hold the analog value.

void setup() {
    // open the serial port at 9600 bit/s:
    Serial.begin(9600);
}

void loop() {
    // Read the analog input on pin 0:
    analogValue = analogRead(0);

    // Print it out in many formats:
    Serial.println(analogValue);       // print as an ASCII-encoded decimal
    Serial.println(analogValue, DEC);  // print as an ASCII-encoded decimal
    Serial.println(analogValue, HEX);  // print as an ASCII-encoded hexadecimal
    Serial.println(analogValue, OCT);  // print as an ASCII-encoded octal
    Serial.println(analogValue, BIN);  // print as an ASCII-encoded binary
    Serial.println(analogValue, BYTE); // print as a raw byte value

    // Delay 10 milliseconds before the next reading:
    delay(10);
}

出力がまだぎこちない場合、シリアル端末に何か問題があります。

他のヒント

問題ここに接続するアナログデバイスは、同じ接地電位ではありません。 例:PCとセンサーを使用してArduinoボードの電源をオンにすると、他のソースを使用して電源がオンになりますが、Arduinoポートから値を読み取ろうとすると、この瞬間に上記のエラーが発生します。同じ電源からarduinoとセンサーでこの電源を試し、DOcklightを介してシリアルポートを使用してデータを読み取ろうとすると、問題が解決します。

シリアルモニターウィンドウ(右下隅)のボーレートを、コードで設定されている値と同じ値に設定する必要があります(例: Serial.begin(9600); )。

出力がどのように見えるかから、valmを文字列に変換する必要があるようです。そのため、数値を数値で出力できます。

また、アナログに差し込んだワイヤはフローティングですか?そうである場合、アンテナのように振る舞い、ランダムノイズを取得するだけです(ただし、強い60Hz成分が含まれる可能性があります)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top