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