[아두이노 강좌] 14. 아두이노 시리얼 통신 사용하기 / Serial.begin(), Serial.println(), Serial.available(), Serial.read(), Serial.end()
개요
아두이노는 시리얼 통신을 통해 다른 기기들과 데이터를 주고 받을 수 있습니다. 여기서 다른기기는 컴퓨터가 될수도 혹은 센서가 될수도 있습니다. 이번 글에서는 시리얼 통신에 대해 알아보고, 아두이노와 컴퓨터간의 시리얼 통신을 해보도록 하겠습니다. 시리얼 통신이란?
시리얼(Serial)은 직렬이란 뜻으로, 시리얼 통신은 직렬통신을 말합니다. 반대되는 개념 으로는 병렬(Parallel)통신이 존재하며, 두가지 모두 다른 기기와 데이터를 주고 받기 위한 통신 방법에 해당됩니다. 그림1. 직렬 통신과 병렬 통신 직렬 통신은 데이터를 1개씩 보내는 방법으로, 속도는 느리지만 거리가 길다는 장점이 있으며, 병렬 통신은 데이터를 여러개씩 보내 속도는 빠르지만 거리가 짧다는 단점이 있습니다. 시리얼 통신을 하기 위해서는 수신선(RX)과 발신선(TX)이 필요하며 아두이노 우노 보드는 디지털 0번핀(RX)과 1번핀(TX)을 통해 시리얼 통신이 가능합니다. 부가적으로 설명하자면.. 디지털 0번핀과 1번핀은 컴퓨터와 연결되는 USB 단자와도 연결 되어 있습니다. 즉, USB 케이블을 통해 아두이노와 컴퓨터를 연결하면 서로간의 시리얼 통신이 가능합니다. 또 부가적으로 설명해보자면.. USB단자를 통해 아두이노와 컴퓨터가 연결되어 있는데 아두이노의 디지털 1번핀과 0번 핀도 다른 기기와 연결되어있다면 중복 되기 때문에 통신이 꼬여 오류가 발생하기도 합니다. ^^
아두이노와 PC 통신하기
통합개발환경의 우측 상단에 위치한 시리얼 모니터 기능을 사용하면 아두이노와 PC간의 데이터 전달을 눈으로 확인할 수 있습니다. 간단한 예제 코드를 업로드한 후 시리얼 모니 터를 통해 확인해보도록 합시다.
프로그램 코드 (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초 동안 딜레이. }
그림2. 시리얼 모니터 창
프로그램 해석 시리얼 통신을 하겠다는 내용이 주입니다. 시리얼 모니터에 출력되는 정수형 변수, 실수형 변수, 문자열 비교해봅시다. 사용된 코드는 아래를 참고하세요.
■Serial.begin(통신속도) 시리얼 통신의 시작을 알리며, 통신속도를 설정합니다. 매개변수 통신속도 - 300~115200, 보통 9600으로 설정합니다. ■Serial.print(값) 또는 Serial.println(값) 시리얼 통신의 데이터를 출력합니다. 시리얼 모니터로 확인이 가능합니다. 매개변수 값 - 출력할 값을 설정합니다. print를 사용하면 한줄로(옆으로) 출력되며, println을 사용하면 데이터를 출력할 때마다 줄을 바꿔 아래로 출력합니다.
■Serial.available() 시리얼 통신으로 수신된, 읽지 않은 상태의 데이터 수를 반환합니다. 반환값 수신된 데이터 중 읽지 않은 상태의 데이터 수를 반환합니다. 없을 경우 0을 반환. ■Serial.read() 수신 데이터 중 하나의 데이터를 반환합니다. (저장된 순서대로) 반환 값 읽지 않은 상태의 데이터 중 가장 먼저 저장된 데이터를 반환합니다. ■Serial.end() 시리얼 통신을 끝내기 위한 함수입니다. (경우에 따라 사용하지 않아도 되요.)
링크바로가기: https://smartstore.naver.com/mechasolution_com/products/2855891646
|