본문 바로가기
Arduino/Arduinio기초 실습

4장. 시리얼 통신 실습

by sinki 2022. 4. 2.

실습은 개인 학습을 위해 "주) 엘케이 임베디드" 사이트에서 구매한 아두이노 코딩 배우기 고급 키트를 이용한 학습입니다. 동봉된 책을 기반으로 학습하면서 개인적인 궁금증과 추가 필요한 부분을 정리한 블로그임을 미리 알려드립니다

 

< 준비물 >

아두이노 우노 R3 : 1개

USB 케이블  : 1개 

 

< 개요 >

 아두이노의 시리얼통신 제어에 대하여 간단하게 실습해 보겠습니다. 이번장은 회로 구성은 따로 없고 프로그래밍 코드 작성으로만 진행됩니다. 프로그래밍 동작은 아두이노 IDE의  시리얼 모니터를 통해서 시리얼 값을 아두이노에 전송했을 때 해당 시리얼 값을 다시 시리얼 모니터에 출력하는 예제입니다.  

팅커 캐드 링크입니다 : https://www.tinkercad.com/things/hHXo2xpIaNP

 

< 참고 지식>

⦿ 시리얼 모니터(Serial Monitor) 

 

시리얼 모니터는 아두이노 보드와 PC 간 시리얼 데이터를 주고받을 수 있는 별도의 분리된 창입니다. 코드를 작성하는 도중 궁금한 변수의 값이 있다면 시리얼 모니터를 이용해 쉽게 확인할 수도 있습니다. 이를 이용하면 별도의 디버깅 장비 없이도 결과를 테스트할 수 있는 장점이 있으면 이는 코딩 작업을 진행하면서 시간을 단축할 수 있는 강력한 툴입니다.

 

< 실습 코드 >

char character;  //char 형 변수 선언
void setup()
{
  Serial.begin(9600); //시리얼 통신속도를 9600 bps로 설정
  Serial.println("Welcome to sinki World.!"); // 시리얼 모니터에 문자 출력
}

void loop()
{
  if (Serial.available()) //시리얼 값이  입력받았을 때 실행
  {
    character = Serial.read(); //시리얼 입력받은 값을 변수에 저장
    Serial.print(character); //변수를  시리얼 모니터에 출력
  }
}

 

< 함수 설명 >

⦿ Serial.begin(speed) : 시리얼통신의 속도를 설정하는 함수입니다. 9600, 19200,38400, 57600, 115200 보드 레이트(Baudrate) 중 하나를 설정할 수 있으면 두 장치 간의 통신속도가 동일해야 정상적으로 통신이 이루어집니다. ✻ 보드 레이트는 1초당  전송되는 비트의 수입니다.(bit per second)

⦿ Serial.available() :  직렬 버퍼에 수신된 데이터의 개수(byte)를 반환하는 함수입니다. 예를 들어 PC에서 아두이노로 "ABCD"를 보냈다면 Serial.available() 함수는 3이 반환이 됩니다. Serial.available() 함수는 시리얼 통신을 통해 들어온 데이터가 있는지, 들어온 데이터가 몇 개 인지 확인하는 용도로 사용하는 함수입니다.

⦿ Serial.read() : 시리얼통신을 통해 수신된 데이터를 한 번에 하나씩 반환하는 함수입니다.

⦿ Serial.print(Value) : 시리얼통신으로 값을 송신할 때 사용합니다. Value에 큰 따옴표를 넣고 문자를 적으면 아스키코드값으로 송신되고 Value에 변수를 넣으면 변수의 내용이 송신됩니다.

⦿ Serial.println(Value) : 시리얼통신으로 값을 송신할 때 사용합니다. Value에 큰 따옴표를 넣고 문자를 적으면 아스키코드값으로 송신되고 Value에 변수를 넣으면 변수의 내용이 송신됩니다. 데이터를 송신할 때 라인을 새로 바꾸는 아스키 값도 포함되어 PC에서 데이터를 수신할 때에는 문자가 새로운 라인으로 변경되어 출력되는 것을 확인할 수 있습니다.

 

✖︎ 주의사항 : 아두이노 우노의 RX, TX핀인 디지털 0번 핀과 디지털 1번 핀을 입출력으로 사용하고 있다면 아두이노 스케치에서 업로드를 실패할 수 있습니다. 왜냐하면 USB 케이블을 이용하여 프로그램 업로드 시 아두이노 우노의 디지털 0번 핀과 1번 핀을 사용되기 때문입니다.

 

 

'Arduino > Arduinio기초 실습' 카테고리의 다른 글

6장. 7세그먼트(7 Segment. FND), 스위치 실습  (0) 2022.04.04
5장. 가변저항 10K 실습  (0) 2022.04.02
3장. 74HC595, LED 실습  (0) 2022.04.01
2장. 3색 LED 실습  (0) 2022.03.27
1장. LED 스위치 실습  (1) 2022.03.26