시리얼 모니터링

Previous Next

ProchipStudio에서는 시리얼 포트의 통신을 확인할 수 있는 시리얼 모니터링 기능을 제공합니다. 해당 기능을 사용하여 보드 내부의 동작을 확인할 수 있고 이를 디버깅에 활용할 수 있습니다.


시리얼 모니터링 기능을 사용하기 위해 다음과 같이 코드를 작성하고 보드에 다운로드합니다.



작성한 코드의 뜻은 다음과 같습니다.




9600 baudrate로 시리얼 통신을 시작하고, ProchipStudio 문자열을 전송한 후 1초마다 Hello 문자열을 전송하는 코드입니다. 시리얼 모니터링 기능을 사용하여 작성한 프로그램이 정상적으로 작동하는지 확인해 봅시다.


버튼 메뉴의 모니터링 버튼을 클릭하면 시리얼 모니터 창이 나타납니다.




시리얼 모니터 창으로 문자열이 전송되는것을 확인할 수 있습니다.


만약 문자열이 깨져서 나오거나 알아볼 수 없는 기호가 출력된다면 우측상단의 baudrate를 확인해 보시기 바랍니다. 코드에서 작성한 baudrate와 일치해야 합니다.




시리얼 모니터 창의 간단한 각 부 설명입니다.






시리얼 모니터링 기능을 사용하여 PC와 Prochip간의 통신을 하는 예제를 작성해봅니다.

아래의 예제는 사용자가 입력한 내용을 그대로 시리얼 모니터에 출력하는 코드입니다.




코드의 뜻은 다음과 같습니다.




시리얼 포트에 데이터가 들어왔을때 데이터가 없을 때까지 들어온 데이터를 다시 PC로 전송하는 코드입니다. print대신 write를 사용한 이유는 아래에서 알려드리겠습니다.

시리얼 모니터를 통해 작동을 확인해 봅시다.





아래는 시리얼 통신시 쓰이는 주요 함수입니다.




begin(baudrate)

설정한 baudrate로 시리얼 통신을 시작한다.

available()

시리얼 포트 버퍼에 읽을 데이터가 있는지 확인하여 버퍼에 남은 데이터의 바이트 길이를 반환한다.

read()

시리얼 버퍼에서 int형식으로 바이트 하나를 읽어 반환하고 버퍼에서 해당 바이트를 삭제한다. 더이상 읽을 데이터가 없을시 -1를 반환한다.

peek()

시리얼 버퍼에서 int형식으로 바이트 하나를 읽어 반환하지만 버퍼에서 바이트를 삭제하지 않는다.

print()

텍스트 혹은 숫자를 출력한다.

println()

텍스트 혹은 숫자를 출력하고 다음 라인으로 이동한다.(Newline)

write()

바이너리 데이터를 출력한다.




위의 예제에서 print대신 write를 사용한 이유입니다. read()시 int형으로 데이터를 읽기 때문에 print로 출력하면 해당 문자열의 아스키 코드값이 출력됩니다. 다음과 같이 예제를 작성하여 직접 테스트해 보도록 합니다.






다음 예제는 시리얼 모니터링을 통해 1초마다 내부 핀(2, 3, 아날로그0, 아날로그1)의 상태를 확인하는 코드입니다. 시리얼 모니터를 통해 출력을 확인해 봅시다.



void setup()

{

   Serial.begin(9600);


   //핀모드 설정

   pinMode(2,INPUT);

   pinMode(3,INPUT);

   pinMode(A0,INPUT);

   pinMode(A1,INPUT);

   

}


void loop()

{

  Serial.print("Pin 2 : ");

  if(digitalRead(2) == HIGH) Serial.println("HIGH"); //핀이 HIGH일때 시리얼 모니터에 HIGH 출력

  else Serial.println("LOW"); //아니면 LOW 출력

 

  Serial.print("Pin 3 : ");

  if(digitalRead(3) == HIGH) Serial.println("HIGH"); //핀이 HIGH일때 시리얼 모니터에 HIGH 출력

  else Serial.println("LOW"); //아니면 LOW 출력

 

  Serial.print("Pin A0 : ");

  Serial.println(analogRead(A0)); //아날로그 핀 값을 그대로 출력

 

  Serial.print("Pin A1 : ");

  Serial.println(analogRead(A1));  //아날로그 핀 값을 그대로 출력

 

  Serial.println("");

 

  delay(1000); //1초 대기

 

}




Created with the Personal Edition of HelpNDoc: Free EPub producer