2009-06-18 3 views
2

나는 Arduino로 시계를 만들고 있는데, 시간을 설정하기위한 버튼을 만들고 싶습니다. 테스트하기 위해, 나는 아날로그 입력 핀 0에 전선을 꽂고, 핀을 읽고 직렬을 통해 인쇄하기 위해 두 줄의 코드를 썼다.하지만 나는 모두 쓸모가 없다. J D ± μ Ê ?? JDD ± μ ??? ºjRd ± μ ??? ºj D ± μ :Arduino의 analogRead()는 시리얼을 통해 인쇄 할 때 쓰레기를 반환합니다.

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

는 그리고 제가 시리얼 모니터에서 얻을 것이 이것이다??????? ± εj ± d ± ± μμj ÷ μRd ± ± μj ± d ± ± Rd ± Δμ △ j △ d ± ± △ j △ d ± ± △ △ ▽ jRd △ ± △ ▽ △ ▽ △ ▽ ▽ △ ▽ ▽ Σj = d · ± μj · d · ± μ · j · Rd · ± μ · j · d · ± μ · εj · Rd · ± μ · ηj · d ± μ ㆍ εj ㆍ d ㆍ ± μ ㆍ εj ㆍ d ㆍ ± μ ㆍ jRd ㆍ ± μj ㆍ d ㆍ ± μjdd ㆍ ± μ ㆍ jRd ㆍ ± μ ≤j ≤ d ≤ ± μ ε ≤jRd ≤ ± μj ≤ d ≤ ± μ η ≤j ≤ d ≤ ± μ ≒ jRd ± ± μj ± d, ± d, ± d, ± d, ± d, ± d, ± d, ?? ªj? d? ± μ? sj? d? ± μ? jRd? ± μ? j? d? ± μ? j? d? ± μ?? ?? ?? jRd α ± μ ㆍ νd ㆍ ± μ ㆍ ηj ㆍ d ㆍ ± μ ㆍ εj ㆍ d ㆍ ± μ ㆍ ? jTd ± ± μjj dd ± ± jj dd ± ± μjjd ± ± μjjd ± ± μj ± jRd ± ± ηjdd ± μμi ≠ jRd ± ± μjsd ± μμj dθ ± μθjTd ± ± μjRd ± μ ㆍ εj ㆍ d ㆍ ± μ ㆍ εjTd ㆍ ± μ ㆍ εjRd ㆍ ± μ ㆍ νj ㆍ d ㆍ ± μ ㆍ ηj ㆍ d ㆍ ± μ ㆍ ρj ㆍ d ㆍ ± μ ÷ μ ÷ jRd μ ± ηj ± d μ ± πj ± d μ ± μPj ± ± μj ± d ± ± μj ± d ± ± μ ± γ ± εj ∂d ± ± ∂μd ∂d ± ∂y ∂y ∂y ∂y ± μ jj ∂d ∂ ± μ ε Âj → d → ± μ ≤jRd → ± μ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ± j ≤ d ≤ μ ≤ η ≤ jdd ± ± ?? jRd? ± μ? j? d? ± μ? ªjPd? ± μ? j? d? ± μ? j? d? ± μ?? ?? jRd? ± μ μj ≤ d ≤ μμi ≠ jdd ± μμjRd ≤ ± μ Âj ≤ d ≤ μ ε ≤ jDd ≤ ± μ μs ≤ j ≤ d μ μ μ μ μ ε μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ μ ± πj ± d ± ± μμs ± μPd ± ± μj ± d ± ± μμ ± Φjj ± d ± ± μμs ± j ≤ d ≤ ± μ ≤ j ≤ d ≤ ± μ ≤ j ≤ Rd ≤ ± μ ≤ j ≤ d ≤ ± μ ≤ ∂Td ≤ ± μ ≥j ≤ d ≤ ± μ j j j 012 ± μ j R? ± j j??? j j j j j j j j? ± ± μ Âj → d → ± μ → η → μRd → ± μ → ηjRd → ± μ → η → JTd → ± μ ≤ j ≤ d ± ± Φj

왜?


편집 : 출력 디지털 핀 0을 설정했고, 나는 내가 아두 이노 웹 사이트에 가서 페이지 Analog Input Pins을 발견, 그래서 그게 문제였다 어쩌면 생각

.

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

그건 그렇고, 아날로그로만 된 핀에서 읽으려고하고, 디지털로도 읽지 않으려 고합니다.

+0

Serial.println() 전에 Serial.begin()을 호출 했습니까? –

답변

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

출력이 여전히 횡설수설이라면 직렬 단자에 문제가있는 것입니다.

+0

예, 해당 코드가 작동합니다 –

+0

코드를 형식화 할 수 있습니까? –

-1

출력 결과는 valm을 문자열로 변환해야하므로 숫자 값을 인쇄 할 수있는 것처럼 보입니다.

또한 아날로그로 연결된 와이어가 부유합니까? 왜냐하면 만약 그렇다면 안테나처럼 행동하고 랜덤 잡음을 잡아낼 수 있기 때문입니다 (그러나 60Hz 성분이 강할 수 있습니다).

+1

아니요, Serial.println은 float 입력을 처리하도록 오버로드됩니다. –

+0

전선이 떠 다니고 잡음이 잡히지 만, 그 값이 제로가되는지를 확인해야하기 때문에 문제가되지 않습니다. (내가 접지와 연결할 때) 정말 이상한 것을 발견했습니다. : Serial.println (analogRead (0)); 올바르게 인쇄됩니다. 그리고 Arduino 웹 사이트 (http://arduino.cc/en/Reference/AnalogRead) 은 analogRead가 int를 반환한다고 말합니다. –

+0

아마도 Serial.println ((float) valm)을 시도한 경우; ? – CookieOfFortune

0

문제점 연결된 아날로그 장치가 @ 접지 전위가 아닙니다. 예 : PC 및 센서를 사용하는 Arduino 보드의 전원이 다른 소스를 사용하여 켜져 있지만 Arduino 포트에서 값을 읽으려는 경우이 순간에 위의 오류가 발생합니다. 같은 전원 소스에서 arduino와 센서에이 전원을 연결하고 문제가 해결 될 수 있도록 DOcklight를 통해 직렬 포트를 사용하여 데이터를 읽으려고 시도하십시오.

0

직렬 모니터 창 (오른쪽 하단 모서리)에서 전송률을 코드에 설정된 값 (예 : Serial.begin(9600);)으로 설정해야합니다.

관련 문제