본문 바로가기
아두이노

3.4 시리얼통신을 이용한 LED제어

by Beijing_KingGod 2019. 12. 18.

우리는 앞의 과정에서 시리얼통신의 기본을 이용한 간단한 실험을 진행했었다. 시리얼통신을 이용하면 컴퓨터와 아두이노사이에 데이터를 송수신 할 수 있다. 이것을 이용하여 디지털포트의 입출력을 조절하는 것 또한 가능하다. 이번 단원에서는 시리얼 통신의 신호를 이용하여 LED를 제어하는 실험을 할 것이다.

 

실험목표

아두이노 시리얼 통신을 이용하여 LED를 제어한다.

 

필요부품

Arduino Uno, 브레드보드, 점프선, LED 2, 330Ω저항 2

 

시리얼통신을 하기 위한 기본적인 명령어들은 앞의 단원에서 모두 다루었다. 바로 다음 예제를 실습해보도록 하자.

 

 

[Serial통신으로 LED제어하기 배선도]
[Serial통신으로 LED제어하기 회로도]

 

[실제 회로구성의 모습]

다음과 같이 브레드보드에 330옴 저항과 빨간색LED 그리고 초록색LED를 연결한다. LED (+) 부분은 아두이노 보드의 6번핀과 7번핀에 각각 연결한다. LED (-) 부분은 저항과 직렬 연결 후 GND에 연결해준다. LED다리 중 구부러진 쪽이 (+)이다. 극성에 주의하며 연결하도록 하자.

 

프로그램 작성

[시리얼통신으로 LED 제어 프로그램 예제]

if(data == '1');이전에도 한번 다뤘던 if문이지만 조건식에서 조금 생소한 것이 있을 것이다. 바로 1 앞뒤로 붙어있는 작은 따옴표이다.

위의 디지털 입력편에서는 작은 따옴표를 쓰지 않았다. 그 부분과의 차이는 바로 HIGH 혹은 LOW의 상태를 받느냐와 데이터값을 받느냐의 차이이다. 디지털 입력에서는 if(data == 1)로 썼었는데 여기서 1 HIGH상태를 표시한 값이다. 하지만 시리얼통신에서는 HIGH라는 상태를 받는 것이 아니라 1이라는 char형 데이터값을 수신받는 것이다. 이처럼 if문에서 데이터값을 수신받을 때는 그 값을 작은따옴표로 묶어준다.

 

Serial.println();앞의 단원에서 시리얼통신을 다룰 때에는 Serial.print(); 함수만 사용했었다. 뒤의 ln의 유무는 단지 줄바꿈의 의미이다. Serial.print(); 함수는 문자 출력 후 줄바꿈을 하지 않지만 뒤에 ln을 붙여준다면 문자 출력 후 줄바꿈을 해주게 된다.

 

 

[프로그램 실행 결과]
[시리얼모니터]

 

댓글