Arduino 's analogread () Serial을 통해 인쇄 할 때 쓰레기를 반환합니다.
-
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 구성 요소가 강할 수도 있습니다).