2번째 아두이노 입문편 주제는 아두이노에서 가장 흔히 사용되는 시리얼 통신에 대한 내용과 가장 많이 다루게 될 저항의 저항값을 읽는 법에 대한 내용입니다.
아두이노, 상상을 현실로 만드는 프로젝트: 입문편 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
(이 글은 해당 도서의 내용을 기반으로 작성되었습니다.)
먼저 시리얼 통신에 대해 다루어 보겠습니다. 아두이노 보드와 PC는 시리얼 모니터를 이용해 통신할 수 있는데 이를 시리얼 통신이라고 합니다.
시리얼 통신은 아두이노를 이용한 개발에 있어서 아두이노 보드의 센서 값을 확인하거나 명령을 보내는 등의 역할을 수행하며 유용하게 사용됩니다.
시리얼 통신을 하기 위해서는 처음에 '이미지2'과 같이 설정해야 합니다.
그리고 여기서 매개변수로 들어가는 값이 보드 레이트입니다.
보드 레이트는 통신할 때 통신 속도를 의미하는데 보드와 PC의 보드레이트가 서로 동일해야 정상적인 통신이 가능하고 둘의 값이 서로 다를 때 데이터의 값이 바뀌는 오류가 생기니 유의해야 합니다.
setup함수에서 시리얼 통신을 설정한 다음 loop 함수에서 Serial.println을 이용해 보드가 PC로 메시지를 보냅니다.
Serial.println은 매개변수에 메시지로 보낼 값을 받는데 글자와 숫자 중 원하는 것을 넣을 수 있습니다.
'이미지3'와 같이 코드를 작성해준 뒤, 업로드합니다.
업로드 후에는 [툴] > [시리얼 모니터] 를 선택해줍니다. (단축키 : Ctrl+Shift+M)
실행 결과는 다음과 같습니다.
문장이 1초 간격으로 나오는 이유는 앞 시간에서 배웠던 delay함수를 썼기 때문입니다.
시리얼 모니터 우측하단에 있는 보드레이트를 동일하게 맞춰주는 것에 유의합니다.
그리고 여기서 '이미지3'의 프로그램에서 Serial.println을 Serial.print로 바꿔 업로드한 후 실행해보면 '동영상2'처럼 시리얼 모니터가 메시지를 출력하는 것에 있어서 차이를 보입니다.
이를 통해, Serial.println와 Serial.print의 차이가 줄바꿈 출력에 영향을 미친다는 것을 알 수 있습니다. (C언어에서의 \n과 같다고 보면 됩니다.)
이번에는 반대로 PC에서 보드로 메시지를 보내는 법을 알아보겠습니다.
아래 '이미지5'와 같이 코드를 작성해줍니다. 해당 코드에 대한 설명은 실행 후 설명하도록 하겠습니다.
위 프로그램에 사용된 Serial.read는 시리얼 통신으로 들어온 데이터 중 한 바이트(byte)를 잘라내서 읽는 명령어입니다.
그리고 그 전에 사용된 Serial.available은 아두이노가 상대방으로부터 받은 데이터가 있는지 확인해주는 명령어입니다.
[알고리즘 설명]
Serial.read가 한 바이트 읽은 것을 char형 변수인 c에 넣고 c에 있는 값이 반각문자a와 같은지 확인 한 후 같다면 다시 PC로 A라는 글자를 보내도록 했습니다.
'동영상3'과 같이 a를 넣었을 때 A로 나오면 잘 된 것입니다.
이처럼 시리얼 통신을 이용하면 특정 신호를 전송함으로 원하는 동작을 하는 등 큰 역할을 합니다.
+보너스
저항 읽는 법
저항을 읽는 방법은 2가지가 있는데 그 중 한가지는 바로 멀티미터라는 기계를 이용하는 것입니다. 이 기계를 이용하면 저항 값을 쉽게 확인할 수 있습니다. 멀티미터는 다음과 같이 생겼습니다.
그러나 이 글을 읽는 사람이라면 아두이노를 처음 시작했을 가능성이 높기에 저항에 표기된 띠를 통해 저항을 읽는 방법에 대해 정리해보겠습니다.
저항을 보면 한편에 3~4개의 띠가 몰려있고 반대편에 금,은색의 띠가 있는 것을 확인할 수 있습니다.
금색 또는 은색은 저항값의 오차를 나타내는 것인데 금색은 5%, 은색은 10%의 오차를 갖고 있다는 것을 의미합니다.
저항은 띠가 몰려있는 부분의 띠색을 보고 저항값을 계산합니다.
그렇기에 저항의 값을 읽기 위해 띠가 몰려있는 부분을 왼쪽을 향하게 놔둬야 합니다.
그리고 '이미지6'의 색상표를 참고하여 색깔을 숫자로 바꿔 알아보겠습니다.
위의 색상표에 있는 저항은 초록-파랑-노랑-금색 이므로 5-6-0 오차범위 5%를 나타내는 것이므로 저항값이 560 +- 5라는 것을 쉽게 알 수 있습니다.
다음 포스팅은 [LED 제어]에 대한 포스팅입니다.
(본 아두이노 시리즈는 5년 전 학창 시절에 작성했던 아두이노 강좌를 토대로 재작성하는 포스팅입니다.)
아두이노 강좌 입문편 #2 (시리얼 통신 + 저항 읽는 법)
안녕하세요~ 네온 무드의 아두이노 정복기 2번째 시간입니다. 오늘은 시리얼 통신이라는 것과 보너스로 멀...
blog.naver.com
'아두이노 > 아두이노 기초' 카테고리의 다른 글
아두이노 강좌 입문편 #3 (LED 제어하기) (0) | 2023.07.20 |
---|---|
아두이노 강좌 입문편 #1 (기본 LED 제어) (1) | 2023.07.12 |