Arduino analogRead () возвращает мусор, когда я печатаю через последовательный порт - PullRequest
2 голосов
/ 18 июня 2009

Я делаю часы с Arduino, и я хочу сделать кнопку, чтобы установить время. Итак, просто для проверки я подключил провод к выводу аналогового входа 0 и написал две строки кода, чтобы прочитать вывод и распечатать его через последовательный порт, но все, что я получаю, это мусор.

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

И что я получаю от последовательного монитора, так это: ? J? Д? ± ц? Е ?? JDD? ± ц ??? ºjRd? ± ц ??? ºj? Д? ± ц? Е ?? J? Д? ± ц? Э? ªjRd? ± ц ?? ? ÊjRd? ± μ ??? Aj? д? ± μ ???? J? д? ± μ? Э ?? J Rd? ± ц ???? J? Д? ± ц ??? ºj? Д? ± ц? Э ?? JRD? ± ц ???? J? Д? ± ц? Е? ÊjDd? ± ц ?? ? Aj? д? ± μ ???? J? д? ± μ? Э ?? JRD? ± μ ???? J? г ? ± ц? Э? ÂjRd? ± ц ??? EJ? Д? ± ц ??? ªj? Д? ± ц? Е? EJ $ д? ± ц ??? ÂjRd? ± ц ???? J? д? ± ц ???? JDD? ± ц ???? JRD? ± μ ??? Aj? д? ± ц? Э? ÊjRd? ± ц ???? J? д? ± ц? Т? EJ? д? ± ц? Э? ÂjRd? ± ц ???? J? д? ± ц ???? J? д? ± М? е ?? JRD? ± М ??? Aj? д? ± ц ??? EJ? д? ± ц? ?? ªj? Д? ± ц ??? EJ? Д? ± ц ??? ÂjRd? ± ц ???? J? Д? ± ц ???? J? Д? ± ц? Э ?? JRD? ± ц ??? Aj? д? ± ц? Т? EJ? д? ± ц? Э? ªj? д? ± ц? Э? ? JTD? ± μ ??? Aj? Д? ± μ ???? J? Д? ± М? Е ?? JRD? ± мю ???? J? D? ± р,? Е? ÂjRd? ± М? ?? EJ? д? ± μ? Э? ªjRd? ± μ ??? EJ? д? ± μ ??? ºj ? Д? ± μ? Э. ?? JTD? ± μ ???? JRD? ± ц ??? ªj? Д? ± μ? Э? ÂjTd? ± μ? Э? ÊjRd? ± μ ??? ªj? Д ? ± μ ??? EJ? д? ± μ ??? ºj? д? ± μ? Э. ?? JRD ? ± ц ??? EJ? Д? ± ц ??? ªj? Д? ± ц? Э? ÂjPd? ± ц ??? EJ? Д? ± ц ??? ªj? Д? ± ц? A? EJ ? д? ± ц? Э? ºjRd? ± ц ???? J? д? ± ц? Э ?? JRD? ± ц ??? ªj? д? ± ц? е? Aj? д? ± ц ??? ÊjRd? ± ц ??? ªj? д? ± ц? Т? EJ? д? ± ц ??? ºjRd? ± ц ???? J? д? ± μ ??? EJ? д? ± М? е? ªjdd? ± ц? ?? ÂjRd? ± ц ??? Aj? Д? ± ц? Э? ªjPd? ± ц ??? EJ? Д? ± ц ???? J? Д? ± ц? Э ?? JRD? ± М? ?? EJ? д? ± μ? Э? ªjdd? ± μ ??? ÂjRd? ± ц ??? Aj? Д? ± ц? Э? ªjDd? ± ц ??? EJ? Д? ± М? Е ?? J? Д? ± ц? Э ?? JRD? ± ц ??? ÊjRd? ± М ??? ªj? д? ± μ? е? ÂjPd? ± μ ??? Aj? д? ± μ ??? ªj ? Д? ± ц? Э? Êjdd? ± ц? Е ?? JRD? ± ц ???? J? Д? ± ц? Э? EJ $ д? ± ц ??? ªjRd? ± ц ??? Aj ? д? ± М? A? ÂjTd? ± ц ??? ªj? д? ± μ ??? EJ? д ? ± μ ???? JRD? ± μ ???? J? Д? ± μ? Э? ÊjTd? ± μ ??? ªjRd? ± μ ??? Aj? Д? ± μ ??? Aj? Д ? ± М? Э? ªjRd? ± ц ??? ÊjRd? ± ц? Т ?? JTD? ± ц ???? J? д? ± μ ??? EJ

Почему?


Edit:

Я настроил цифровой вывод 0 на вывод, и я подумал, что, возможно, в этом проблема, поэтому я зашел на сайт Arduino и нашел страницу Выводы аналогового входа .

Итак, я попытался прочитать с вывода 14, который, как говорят, является выводом аналогового входа 0, но я получил тот же вывод.

Кстати, я пытаюсь читать только с аналоговых выводов, а не с цифровых.

Ответы [ 4 ]

2 голосов
/ 18 июня 2009

Попробуйте запустить этот пример кода, найденный на веб-сайте 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);
}

Если ваш вывод все еще бесполезен, значит, ваш последовательный терминал не в порядке.

0 голосов
/ 17 марта 2016

Вам необходимо установить скорость передачи в окне последовательного монитора (нижний правый угол) на то же значение, которое было установлено в вашем коде (например, Serial.begin(9600);).

0 голосов
/ 08 января 2014

Проблема Вот аналоговое устройство, к которому вы могли подключиться, не имеют одинаковых потенциалов заземления. Пример: если питание на плате Arduino с помощью ПК и датчика включено с помощью другого источника, но вы пытаетесь прочитать значение с порта Arduino, в этот момент выдается ошибка, указанная выше. Попробуйте включить питание Arduino и датчика от того же источника питания и попытаться прочитать данные через последовательный порт через DOcklight, и вы получите решение проблемы.

0 голосов
/ 18 июня 2009

Из того, как выглядит ваш вывод, кажется, что вам нужно преобразовать valm в строку, чтобы вы могли вывести значение численно.

Кроме того, провод, который вы подключили к аналоговому в плавающем? Потому что, если это так, он будет действовать как антенна и захватывать случайный шум (хотя, может иметь сильный компонент 60 Гц).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...