Arduino 's analogread () Serial을 통해 인쇄 할 때 쓰레기를 반환합니다.

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

  •  06-07-2019
  •  | 
  •  

문제

Arduino와 함께 시계를 만들고 시간을 설정하기 위해 버튼을 만들고 싶습니다. 따라서 테스트하기 위해 아날로그 입력 핀 0에 와이어를 꽂고 핀을 읽고 직렬을 통해 인쇄하기 위해 두 줄의 코드를 작성했지만 쓰레기는 정크입니다.

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

그리고 직렬 모니터에서 얻는 것은 다음과 같습니다.? ± µ? é? ªjrd? ± µ ??? êjrd? ± µ ??? Âj? d? ± µ ??? D? ± µ ??? ºJ? d? ± µ? é ?? ? ? µ? é? êjrd? ± µ ???? J? d? ± µ? ò? êj? d? ± µ? é? Âjrd? ± µ ???? J? d? ± µ ????? d? ± µ? é ?? jrd? ± µ ??? Âj? d? ± µ ??? êj? d? ± µ? ?? ± µ ???? Âj? d? ± µ? ò? êj? d? ± µ? é? ªj? d? ± µ? é? ? ?? êj? d? ± µ? é? ªjrd? ± µ ??? êj? d? ± µ ??? ºJ? d? ± µ? è jtd? ± µ ???? Jrd? ± µ? ?? é ?? jrd? ± µ ??? êj? d? ± µ ??? ªj? d? ± µ? é? Âjpd? ± µ ??? êj? d? ± µ ??? ± µ? ± µ ? â? ± µ ??? êjrd? ± µ ??? ªj? d? ± µ? ò? êj? d? ± µ ??? ºJrd? ± µ ???? J? d? ± µ ??? êj? d? d? ? ± µ? ê? ªjdd? ± µ? ?? âjrd? ± µ ???? Âj? d? ± µ? é? ªjpd? ± µ ??? êj? d? ± µ ????? J? ± µ? é ?? jrd? ± µ? ?? êj? d? ± µ? é? ªjdd? ± µ ??? Âjrd? ± µ ??? Âj? d? ± µ? é? ªjdd? ± µ ??? êj? D? ± µ? ê ?? ªj? d? ± µ? ê? Âjpd? ± µ ??? Âj? d? ± µ ??? ªj? d? ± µ? É? êjdd? ± µ? é ?? jrd? ± µ ????? j? d? ± µ? é? êj $ d? ± µ ??? ªjrd? ± µ ??? êj? d? ± µ ????? Jrd? ± µ ???? J? d? ± µ? é? êjtd? ± µ ??? Âj? d? ± µ? é? ªjrd? ± µ ??? êjrd? ± µ? ò ?? jtd? ± µ ????? J? d? ± µ ???

왜요?


편집하다:

디지털 핀 0을 출력으로 설정했는데 문제가 될 것이라고 생각했기 때문에 Arduino 웹 사이트로 가서 페이지를 찾았습니다. 아날로그 입력 핀.

그래서 나는 그들이 아날로그 입력 핀 0이라고 말하는 핀 14에서 읽으려고했지만 동일한 출력을 얻었습니다.

그건 그렇고, 나는 아날로그 전용 핀에서 읽으려고 노력하고 있습니다.

도움이 되었습니까?

해결책

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

출력이 여전히 횡설창 인 경우 직렬 터미널에 문제가 있습니다.

다른 팁

여기서 문제는 연결할 수있는 아날로그 장치가 @ 동일한지면 전위가 아닙니다. 예 : PC와 센서를 사용하여 Arduino 보드에서 전원을 공급하는 것이 다른 소스를 사용하여 전원을 공급받지 만 Arduino 포트에서 값을 읽으려고하면이 순간에 위의 오류가 발생합니다. 동일한 전원에서 Arduino 및 센서 에서이 전원을 사용해 보시고 Serial Port를 사용하여 Docklight를 사용하여 데이터를 읽으십시오. 문제가 해결됩니다.

직렬 모니터 창 (하단 오른쪽 코너)에서 보드 속도를 코드에서 설정 한 것과 동일한 값으로 설정해야합니다 (예 : Serial.begin(9600);).

출력의 모습에서 Valm을 문자열로 변환해야하므로 값을 수치 적으로 인쇄 할 수 있습니다.

또한 플로팅에서 아날로그에 꽂은 와이어가 있습니까? 그렇다면 안테나처럼 작동하고 임의의 노이즈를 잡을 수 있기 때문입니다 (그러나 60Hz 구성 요소가 강할 수도 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top