PC의 COM 포트로 들어오는 값을 보여주는 도구입니다.
센서의 값을 출력하며 모니터링 하거나, 프로그램의 특정 지점에서 어떤 상태인지 값들을 출력하며
디버깅하는데 주로 사용됩니다.
컴퓨터 프로그램이나 하드웨어 장치에서 잘못된 부분, 즉 버그를 찾아서 수정하거나 또는 에러를 피해 나가는 처리과정.
흔히 프로그램의 오류를 찾아 수정하는 작업을 할 때 “디버깅한다”고 표현합니다.
- 시리얼 모니터에 모니터링 할 값을 출력하여 확인
- LCD/OLED 등에 모니터링 할 값을 출력하여 확인
- LED, BUZZER 소리, 모터 회전 등의 출력으로 확인

4. MobileManipulator-Blackberry-02-01-SerialMonitor.ino 분석
////////////// 메인 프로그램
void setup() {
Serial.begin( 9600 ); // 시리얼 통신 (baudrate)
}
void loop() {
unsigned long currentTime = millis(); // 아두이노 부팅 후 지금까지
// 경과한 시간(ms)을 변수에 저장
Serial.print( "Hello" ); // 시리얼 모니터에 "Hello"를 출력
Serial.print( ", " ); // 앞서 출력한 Hello에 이어 붙여서 ", "를 출력
Serial.println( "world" ); // 앞서 출력한 Hello, 에 이어붙여서 world를
// 출력 후 개행(NewLine)
Serial.println( "Hello, arduino" ); // 시리얼 모니터에 출력 후 개행
Serial.println(); // 개행
delay(5000); // 5초 대기
}
주요 사용 함수
- Serial.begin(통신속도) : 연결된 COM 포트로 통신 시작
- Serial.print(value) : value 내용(값)을 COM 포트로 출력
- Serial.println(value) : Serial.print(value) + 줄 넘김(New Line)
Baud rate (통신 속도)
Baud의 d가 묵음이므로 보 레이트(보오 레이트)라고 발음합니다.
시리얼 모니터 우측 하단에 있는 보 레이트를 프로그램에서 begin()에 사용한 통신 속도와 맞춰주어야 합니다. 통신 속도가 맞지 않으면 시리얼 모니터에 글자가 깨져서 출력됩니다.


5. 센서 값 모니터링
[ PSD센서의 원리 ]

[ PSD센서란 ]
PSD는 Position Sensitive Detector의 줄임 말로, 위치 감지 장치를 의미합니다.
모바일매니퓰레이터 블랙베리에 사용된 PSD센서는 발광부와 수광부로 구성되어 있습니다.
좌측 그림과 같이 수광부로 들어오는 빛의 각도에 따라 출력 전압이 변화됩니다.
거리에 따른 출력 전압은 아래 표와 같이, 일정 거리(6cm) 이상에서는 거리가 멀어짐에 따라 출력 전압이 연속적으로 감소함을 확인할 수 있으며, 이를 이용하여 PSD 센서의 출력 전압을 측정하면 거리를 결정할 수 있습니다.

[ PSD 센서로 거리측정 코딩 실습 ]
////////////// 전방 PSD센서
#define PIN_FRONT_LEFT_PSD A0 // 매니퓰레이터 전방 좌측 PSD센서 연결 핀
#define PIN_FRONT_RIGHT_PSD A2 // 매니퓰레이터 전방 우측 PSD센서 연결 핀
////////////// 메인 프로그램
void setup() {
Serial.begin( 9600 ); // 시리얼 통신 (baudrate)
}
void loop() {
int frontLeftPSDValue = analogRead( PIN_FRONT_LEFT_PSD ); // PSD left 값 읽기
int frontRightPSDValue = analogRead( PIN_FRONT_RIGHT_PSD ); // PSD right 값 읽기
Serial.print( "front left : " ); // 시리얼 모니터에 "front left : "를 출력
Serial.print( frontLeftPSDValue ); // frontLeftPSDValue변수의 값을 출력
Serial.print( ", front right : " );
Serial.print( frontRightPSDValue );
Serial.println(); // 시리얼 모니터 개행
delay(100);
}
- 블랙베리에 소스코드를 업로드 후 시리얼 모니터 버튼을 클릭합니다.
- 시리얼 모니터를 열고, 물체를 전방의 PSD 센서로부터 가까운 곳과 먼 곳을 옮겨가며 시리얼 모니터에 출력되는 전방의 좌측과 우측 PSD 센서 값의 변화를 확인해봅니다.
- 참고로, 장애물이 없는 경우는 100 이하의 값이 출력되며,
10~20cm 정도에서는 600~500 정도의 값이 출력됩니다.
(가까울수록 값이 커지다가 약 6cm 이하에서는 값이 작아짐)


[ auduinomega 2560 핀맵 ]

[ 디지털 핀과 아날로그 핀으로 센서 값 읽기 ]

시리얼 모니터에 출력된 값은 PSD센서의 출력 전압을 아날로그 핀을 사용하여 읽은 것입니다.
아두이노 보드의 핀으로는 0~5V 사이의 전압이 입력될 수 있습니다.
특정 핀에 인가된 전압을 읽는 방법에는 디지털 핀으로 읽는 방법(digitalRead 함수를 사용) 또는 아날로그 핀으로 읽는 방법(analogRead 함수를 사용) 두 가지 방법이 있습니다.
디지털 핀으로 읽는 방법은 디지털 핀에 입력된 전압을 0또는 1 두 가지 상태만을 가지는 값으로 반환합니다.
아날로그 핀으로 읽는 방법은 전압을 많은 단계(아두이노 메가에서는 0~1023으로 총 1024단계)를 가지는 값에 대응하여 반환합니다.
디지털 핀으로 읽으면 이산적인 값을 가지는 것과는 다르게 아날로그 핀으로 읽은 값은 현실 세계의 신호처럼 연속적인 변화를 표현할 수 있게 됩니다.
PSD센서의 값을 디지털 핀을 사용하여 읽으면 멀다, 가깝다 밖에 알 수 없게 됩니다. 여기서는 PSD센서를 사용하여 거리를 측정하려는 것이기 때문에 연속적인 거리 값을 표현할 수 있도록 아날로그 핀을 사용하는 것이 적절합니다.

[ 기초 디버깅 실습 – 소스 코드에서 문제점 찾아 수정하기 ]
////////////// 전방 PSD센서
#define PIN_FRONT_LEFT_PSD A0 // 매니퓰레이터 전방 좌측 PSD센서 연결 핀
#define PIN_FRONT_RIGHT_PSD A2 // 매니퓰레이터 전방 우측 PSD센서 연결 핀
////////////// 메인 프로그램
void setup() {
Serial.begin( 9600 ); // 시리얼 통신 (baudrate)
}
void loop() {
int frontLeftPSDValue = digitalRead( PIN_FRONT_LEFT_PSD ); // PSD left 값 읽기
int frontRightPSDValue = digitalRead( PIN_FRONT_RIGHT_PSD ); // PSD right 값 읽기
Serial.print( "front left : " ); // 시리얼 모니터에 "front left : "를 출력
Serial.print( frontLeftPSDValue ); // frontLeftPSDValue변수의 값을 출력
Serial.print( ", front right : " );
Serial.print( frontRightPSDValue );
Serial.println(); // 시리얼 모니터 개행
delay(100);
}
원래 소스에서 PSD센서의 값을 읽기 위해 digitalRead() 함수를 사용하여 결과 값들이 0 또는 1로 잘못 출력되고 있습니다.
(PSD에서 출력되는 연속적인 전압을 0 또는 1로밖에 읽지 못하고 있음)

analogRead() 함수로 수정 후 다시 업로드하여 실행합니다.
PSD센서의 값을 읽기 위해서는 아래와 같이 analogRead() 함수를 사용해야 결과 값들이 정상적으로 출력됩니다.

'소프트웨어 > Arduino' 카테고리의 다른 글
| PSD를 사용한 측정 및 거리 출력 실습 (0) | 2026.03.09 |
|---|---|
| 무선으로 시리얼 모니터 사용하기 (1) | 2026.03.08 |
| 예제 소스코드 업로딩 실습 (0) | 2026.03.07 |
| 모바일 매니퓰레이터 블랙베리 소개 및 Arduino Software 설치 (0) | 2026.03.07 |
| Arduino 탄생 이야기 (1) | 2026.03.07 |