[아두이노 강좌] 14. 아두이노 시리얼 통신 사용하기 / Serial.begin(), Serial.println(), Serial.available(), Serial.read(), Serial.end()

dd8457f7720c52a9512181cc3c4d2350_1462632
 

 

dd8457f7720c52a9512181cc3c4d2350_1462632 개요

 

아두이노는 시리얼 통신을 통해 다른 기기들과 데이터를 주고 받을 수 있습니다. 여기서 

다른기기는 컴퓨터가 될수도 혹은 센서가 될수도 있습니다. 이번 글에서는 시리얼 통신에

대해 알아보고, 아두이노와 컴퓨터간의 시리얼 통신을 해보도록 하겠습니다.


dd8457f7720c52a9512181cc3c4d2350_1462632


dd8457f7720c52a9512181cc3c4d2350_1462632 시리얼 통신이란?

 

시리얼(Serial)은 직렬이란 뜻으로, 시리얼 통신은 직렬통신을 말합니다. 반대되는 개념

으로는 병렬(Parallel)통신이 존재하며, 두가지 모두 다른 기기와 데이터를 주고 받기 위한

통신 방법에 해당됩니다.


dd8457f7720c52a9512181cc3c4d2350_1462632

그림1. 직렬 통신과 병렬 통신
 

직렬 통신은 데이터를 1개씩 보내는 방법으로, 속도는 느리지만 거리가 길다는 장점이

있으며, 병렬 통신은 데이터를 여러개씩 보내 속도는 빠르지만 거리가 짧다는 단점이

있습니다. 시리얼 통신을 하기 위해서는 수신선(RX)과 발신선(TX)이 필요하며 아두이노

우노 보드는 디지털 0번핀(RX)과 1번핀(TX)을 통해 시리얼 통신이 가능합니다.


부가적으로 설명하자면.. 디지털 0번핀과 1번핀은 컴퓨터와 연결되는 USB 단자와도 연결

되어 있습니다. 즉, USB 케이블을 통해 아두이노와 컴퓨터를 연결하면 서로간의 시리얼 

통신이 가능합니다. 또 부가적으로 설명해보자면.. USB단자를 통해 아두이노와 컴퓨터가 

연결되어 있는데 아두이노의 디지털 1번핀과 0번 핀도 다른 기기와 연결되어있다면 중복

되기 때문에 통신이 꼬여 오류가 발생하기도 합니다. ^^

  

dd8457f7720c52a9512181cc3c4d2350_1462633
 

 

dd8457f7720c52a9512181cc3c4d2350_1462633 아두이노와 PC 통신하기

 

통합개발환경의 우측 상단에 위치한 시리얼 모니터 기능을 사용하면 아두이노와 PC간의

데이터 전달을 눈으로 확인할 수 있습니다. 간단한 예제 코드를 업로드한 후 시리얼 모니

터를 통해 확인해보도록 합시다.

 

dd8457f7720c52a9512181cc3c4d2350_1462634 프로그램 코드 (4)  

 

int a = 30;      // 정수형 변수 a를 만들고 30을 대입(저장)한다.

float b = 30;    // 실수형 변수 b를 만들고 30을 대입(저장)한다.

 

void setup() {                     

Serial.begin(9600);  // 시리얼 통신을 시작하며, 속도는 9600으로 설정.

}


void loop() {                                

Serial.println(a);   // 시리얼 모니터에 a를 출력한다.

Serial.println(b);  // 시리얼 모니터에 b를 출력한다.

Serial.println("Hellow, World!");  // 문자열 Hellow, World!를 출력한다.

delay(1000);     // 1초 동안 딜레이.

}

 

dd8457f7720c52a9512181cc3c4d2350_1462634


그림2. 시리얼 모니터 창
 

 

프로그램 해석

시리얼 통신을 하겠다는 내용이 주입니다. 시리얼 모니터에 출력되는 정수형 변수, 실수형

변수, 문자열 비교해봅시다. 사용된 코드는 아래를 참고하세요.


dd8457f7720c52a9512181cc3c4d2350_1462634

dd8457f7720c52a9512181cc3c4d2350_1462634 
 관련 함수 정리하기


■Serial.begin(통신속도)

시리얼 통신의 시작을 알리며, 통신속도를 설정합니다.

매개변수

통신속도 - 300~115200, 보통 9600으로 설정합니다.


■Serial.print(값) 또는 Serial.println(값)

시리얼 통신의 데이터를 출력합니다. 시리얼 모니터로 확인이 가능합니다.

매개변수

값 - 출력할 값을 설정합니다.

print를 사용하면 한줄로(옆으로) 출력되며, println을 사용하면 데이터를 

출력할 때마다 줄을 바꿔 아래로 출력합니다.

 

■Serial.available()

시리얼 통신으로 수신된, 읽지 않은 상태의 데이터 수를 반환합니다.

반환값

수신된 데이터 중 읽지 않은 상태의 데이터 수를 반환합니다. 없을 경우 0을 반환.


■Serial.read()

수신 데이터 중 하나의 데이터를 반환합니다. (저장된 순서대로)

반환 값

읽지 않은 상태의 데이터 중 가장 먼저 저장된 데이터를 반환합니다.


■Serial.end()

시리얼 통신을 끝내기 위한 함수입니다. (경우에 따라 사용하지 않아도 되요.)

 

 


wintergatan 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2019-02-17 (일) 15:39 6개월전
관련함수 정리하기 printIn 오타있는 것 같아용
주소
     
     
브랜든 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2019-02-18 (월) 08:40 6개월전
알려주셔서 감사합니다:D 바로 수정조치했습니다!
주소


 

메이크쉐어 PC버전 로그인
로그인 해주세요.

회원가입

쪽지

포인트

스크랩
기초강좌(배우고)
부품사용법(익히고)
게시판
메이크쉐어 PC버전 로그인