2012-01-24 2 views
3

나는 Arduino에 대한 코드를 작성하고 있습니다. 그것은 무엇을해야합니까 :모니터 Arduino에서 6 아날로그 입력 핀

그것은 6 개의 아날로그 입력을 모니터링해야하며, 그 중 어떤 것에도 활동이 있으면 직렬 연결을 통해 (핀의 활성 핀 + 값의 수)를 보냅니다.

직렬 연결의 반대쪽에서 다른 프로그램이 주어진 정보를 결정합니다.

최선의 방법은?

+0

또한 코드는 어떤 핀이 HIGH 또는 LOW인지 알려주는 "메시지"에 대해 직렬 포트를 청취 할 수 있어야합니다. 즉, 직렬 포트를 듣고 직렬 포트에 씁니다. 두 작업은 어떻게 동시에 작동 할 수 있습니까? – user1165574

+0

나는이 다른 질문에서 이미 다루었다고 생각합니다 : http://stackoverflow.com/questions/8996675/arduino-code-to-write-and-send-at-the-same-time-simultaneously have not have 당신? –

+0

네, 아직 답장을받지 못했습니다 – user1165574

답변

3

한 용액은 다음과 같이 될 수있다 :

int analogPin1 = 1; 
    int analogPin2 = 2; 
    int analogPin3 = 3; 
    int analogPin4 = 4; 
    int analogPin5 = 5; 
    int analogPin6 = 6; 

    int val = 0; 
    byte sendAnalog=0;   

    void setup() 
    { 
     Serial.begin(9600); 
    } 

    void loop() 
    { 
    val=analogRead(analogPin1); 
    if(val>0){ 
     Serial.print("1"); 
     sendAnalog=val*0.24926697; 
     Serial.print(sendAnalog,BYTE); 

    } 
    val=analogRead(analogPin2); 
     if(val>0){ 
     Serial.print("2"); 
     sendAnalog=val*0.24926697; 
     Serial.print(sendAnalog,BYTE); 

    } 
val=analogRead(analogPin3); 
    if(val>0){ 
     Serial.print("3"); 
     sendAnalog=val*0.24926697; 
     Serial.print(sendAnalog,BYTE); 

    } 
val=analogRead(analogPin4); 
    if(val>0){ 
     Serial.print("4"); 
     sendAnalog=val*0.24926697; 
     Serial.print(sendAnalog,BYTE); 

    } 

}

AD 변환기는 10 개 비트 값을 저장한다. AD 변환기의 최대 값은 1023입니다 ([2^10-1]). 시리얼 통신용 모듈은 데이터 바이트를 전송하므로 1023에서 255 사이의 스케일이 필요합니다. 수식은 (255/1023) * currentAnalogValue (따라서 0.249266 * currentAnalogValue)입니다. 귀하의 컴퓨터 응용 프로그램에서 원래의 값을 받기 위해서는 역 방정식 1023/255 * receivedByte가 필요합니다.

2

텍스트 기반 인터페이스를 사용하는 경우 Arduino와 다른 장치 (여기서는 PC라고 가정) 사이의 통신은 가장 간단하고 디버깅하기가 가장 쉽습니다.

void setup() { 
    Serial.begin(9600); 
} 

void loop() { 
    for (int i = 0; i < 6; i++) { 
     Serial.print(i); 
     Serial.print(":"); 
     Serial.println(analogRead(i)); 
    } 
} 

이 연속적 아날로그 포트로부터 값을 판독하고 (텍스트)로 보낼 것이다 이런 : 예

0:456 
1:26 
2:0 
3:1023 
4:321 
5:1010 

포트는 0~5의 숫자가된다 다음 콜론 (:) 문자는 구분 기호로 전송 된 다음 아날로그 값 (0에서 1023까지)으로 전송됩니다.

이것은 무기한 반복되지만, 활동이있는 경우에만 데이터를 보냅니다. 좀 더 정교한 것이 필요하다면 '활동'을 고려하십시오 (예를 들어, 마지막으로 읽은 이후에 아날로그 값이 변경된 경우에만 데이터를 보내고 싶을 수도 있습니다).

관련 문제