2

我正在用 Arduino 制作时钟,我想制作一个按钮来设置时间。所以,只是为了测试,我在模拟输入引脚 0 中插入了一根电线,并编写了两行代码来读取引脚并通过串行打印它,但我得到的只是垃圾。

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

?j?d?±µ?Ê??jDd?±µ???ºjRd?±µ???ºj?d?±µ?Ê??j?d?±µ?É?ªjRd?±µ?? ?ÊjRd?±µ???Âj?d?±µ????j?d?±µ?É??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?±µ????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?±µ?É?ªjRd?±µ???Êj?d?±µ???ºj ?d?±µ?È??jTd?±µ????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 网站并找到了Analog Input Pins页面。

所以我试图从他们说的引脚 14 读取模拟输入引脚 0,但我得到了相同的输出。

顺便说一句,我正在尝试从仅模拟引脚读取,而不是数字引脚。

4

4 回答 4

2

尝试运行 Arduino 网站上的示例代码。您不需要转换变量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 回答