728x90
1. SoftwareSerial
소프트웨어 시리얼은 소프트웨어로 구현된 시리얼 통신 기능을 의미한다. 아두이노 우노의 소프트웨어 시리얼은 SoftwareSerial 라이브러리로 통해 제공되는데, 이를 이용하면 디지털 핀을 가상의 시리얼 포트로 설정하여 해당 핀을 이용해 시리얼 통신을 수행할 수 있다. 즉, 가상으로 UART 포트를 만들어준다는 것이다. 소프트웨어 방식으로 UART 포트를 가상으로 만든 것이기 때문에 복수 개 이상의 가상 포트 생성 가능하다. 주로 하드웨어 시리얼이 이미 다른 목적으로 사용 중이거나 추가적인 시리얼 통신이 필요한 경우에 소프트웨어 시리얼을 활용할 수 있다.
SoftwareSerial로 만든 가상 포트(들)로부터 수신한 데이터를 하나의 버퍼에 모으게 된다. 따라서 복수 개의 가상 포트로부터 들어와서 한 버퍼에 들어가기 때문에 데이터 구분에 주의 필요하다.(가급적이면 가상포트는 1개만 사용한다.)
2. 사용법
다음과 같은 라이브러리와 함수로 사용한다.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
위와 같이 SoftwareSerial nameOfObject(RxPin, TxPin) 함수로 구현할 수 있다.
- nameOfObject : 이름
- RxPin : 수신(Rx) 핀 번호
- TxPin : 수신(Tx) 핀 번호
3. 예제
// 이 하나의 프로그램으로 양쪽 다 똑같이 돌릴 수 O
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
}
// PC -> UNO1 -> UNO2 에서 UNO1은 매개역할을 하는 셈!
void loop() {
if ( Serial.available() > 0 ) { // PC -> UNO2 사이에 데이터가 오고 가는게 있으면!
mySerial.write( Serial.read() );
}
if ( mySerial.available() > 0 ) { // UNO -> UNO 사이에 데이터가 오고 가는게 있으면!
Serial.write( mySerial.read() );
}
}
'Develop > Arduino Uno' 카테고리의 다른 글
[아두이노 우노] delay() 함수 없이 주기적인 작업 실행하기 - millis() 함수 (0) | 2023.12.18 |
---|---|
[아두이노 우노] 내부 인터럽트(타이머 인터럽트) 실습하기 (0) | 2023.12.18 |
[아두이노 우노] I2C 통신 (TWI 통신) (0) | 2023.12.17 |
[아두이노 우노] I2C 통신 방식의 캐릭터 LCD 실습 (0) | 2023.12.17 |
[아두이노 우노] 인터럽트와 외부 인터럽트 (0) | 2023.12.17 |