2

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

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

?j?d?±µ?Ê?? jDd?±µ ???ºjRd?±µ ??? ºj?d?±µ?Ê?? j?d?±µ?É?ªjRd?±µ ?? ?ÊjRd?±µ ???Âj?d?±µ ???? j?d?±µ?É?? jRd?±µ ???? j?d?±µ ???ºj?d? ±µ?É?? jRd?±µ ???? j?d?±µ?Ê?ÊjDd?±µ ???Âj?d?±µ ???? j?d?±µ?É?? jRd?±µ ???? j?d?±µ?É?ÂjRd?±µ ???Êj?d?±µ ???ªj?d?±µ?Ê?Êj$ d?±µ ?? ?ÂjRd?±µ ???? j?d?±µ ???? jdd?±µ ???? jRd?±µ ???Âj?d?±µ?É?ÊjRd?±µ ??? ?j?d?±µ?Ò?Êj?d?±µ?É?ÂjRd?±µ ???? j?d?±µ ???? j?d?±µ?É?? jRd?± µ ???Âj?d?±µ ???Êj?d?±µ???ªj?d?±µ ???Êj?d?±µ ???ÂjRd?±µ ???? j?d?±µ ???? j?d?±µ?É?? jRd? ±µ ???Âj?d?±µ?Ò?Êj?d?±µ?É?ªj?d?±µ?É??jTd?±µ ???Âj?d?±µ ???? j?d?±µ?É?? jRd?±µ ???? j?d?±µ?É?ÂjRd?±µ? ?? ??ªj?d?±µ?È?ÂjTd?±µ?É?ÊjRd?±µ ???ªj?d?±µ ???Êj?d?±µ ???ºj?d?±µ? É??jRd?±µ ???Êj?d?±µ ??? ªj?d?±µ?É?ÂjPd?±µ ???Êj?d?±µ ??? ªj?d?±µ ?Â?Êj?d?±µ?É?ºjRd?±µ ???? j?d?±µ?É?? jRd?± µ ???ªj?d?±µ?Ê?Âj?d?±µ ???ÊjRd?±µ ??? ªj?d?±µ?Ò?Êj?d?±µ ???ºjRd?± µ ???? j?d?±µ ???Êj?d?±µ?Ê?ªjdd?±µ???ÂjRd?±µ ???Âj?d?±µ?É?ªjPd?±µ ???Êj?d?±µ ???? j?d?±µ?É?? jRd?±µ? ??Êj?d?±µ?É?ªjdd?±µ ???ÂjRd?±µ ??? Âj?d?±µ?É?ªjDd?±µ ???Êj?d?±µ?Ê?? j?d?±µ?É?? jRd?±µ ???ÊjRd?±µ ??? ªj?d?±µ?Ê?ÂjPd?±µ ???Âj?d?±µ ??? ªj?d?±µ?É?Êjdd?±µ?É?? jRd?±µ ???? j?d?±µ?É?Êj$ d?±µ ???ªjRd?±µ ???Âj?d?±µ?Â?ÂjTd?±µ ???ªj?d?±µ ??? Êj?d?±µ ???? jRd?±µ ???? j?d?±µ?É?ÊjTd?±µ ???ªjRd?±µ ???Âj?d?±µ ??? Âj?d?±µ?É?ªjRd?±µ ???ÊjRd?±µ?Ò?? jTd?±µ ???? j?d?±µ???Êj

なんで?


編集:

私はデジタルピン0を出力に設定しましたが、それが問題である可能性があると思ったので、ArduinoのWebサイトにアクセスして、アナログ入力ピンのページを見つけました。

そこで、アナログ入力ピン0と言われているピン14から読み取ろうとしましたが、同じ出力が得られました。

ちなみに、私はアナログのみのピンから読み取ろうとしています。デジタルのピンではありません。

4

4 に答える 4

2

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);
}

それでも出力がぎこちない場合は、シリアル端末に問題があります。

于 2009-06-18T17:19:23.137 に答える
0

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

于 2014-01-08T12:53:35.720 に答える
0

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

于 2016-03-16T22:38:27.573 に答える
-1

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

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

于 2009-06-18T17:10:39.873 に答える