- Imitating Arm
- UART
- 오디세이 x86
- pcb
- 태양광 충전 휴대폰케이스
- 태양광 휴대폰케이스
- motion recognition
- Canny
- opencv-python
- 태양 충전 케이스
- opencv
- pcb 설계
- EasyEDA
- Arduino
- 모션제어
- Video
- Motion Estimation
- artwork
- Python
- 아두이노
- 윈도우10
- 태양광
- 체험지수
- PCB Artwork
- JLCPCB
- odyssey x86J4105
- SIOR-TITAN
- 태양전지
- RQ-TITAN
- 태양광 충전케이스
- Today
- Total
제너럴공국
[아두이노] UART 시리얼 통신 함수 본문
오늘은 arduino의 UART 시리얼 통신 기본 함수들에 대해서 잠깐 정리해볼게요. 시리얼 함수에 대해 정리할 겁니다.
1. Serial.begin()
Serial.begin(9600);
먼저, 시리얼 통신을 진행할, Baud rate를 설정해주세요. 시리얼통신은 UART로 동기식 신호이므로 서로 클럭 수가 맞아야 통신이 가능해요. 기본적으로는 9600bps를 사용해주세요. 나중에 HC-06이라는 블루투스 모듈을 사용할 때, 기본 클럭이 9600bps라는건 추가정보~~ ㅎ
2. Serial.available()
while(Serial.available() > 0){
//시리얼 데이터를 수신한다면?
}
아두이노 내부에는 시리얼통신을 위한 시리얼 버퍼가 존재해요. 시리얼 정보가 수신되면 이 버퍼에 저장되며, 64bytes까지 보관된대요. 이 Serial.available()이라는 함수는 이 시리얼 버퍼에 몇 bytes가 있는지 읽어오는 함수입니다. 1 이상이 출력되면, 버퍼에 수신한 데이터가 존재한다는 말이겠죠? 그래서 보통 위와 같이 while이나 if 문과 함께 사용합니다.
3. Serial.read()
int received_data = Serial.read();
이 함수는 시리얼 버퍼에 있는 데이터를 읽어오는 함수에요. 첫번째 byte를 읽어오고, 만약 읽어올 데이터가 없다면 -1을 int형으로 반환합니다.
4. Serial.print() & Serial.println()
Serial.print("Hello world!");
Serial.print()는 괄호 안의 데이터를 줄바꿈 없이 전송합니다.
Serial.println("Hello world!");
Serial.println()은 괄호 안의 데이터를 보내고 줄바꿈을 합니다!!
5. Serial.write()
Serial.write();
Serial.write()는 Serial.print와 유사하지만, 숫자를 보낼때 큰 차이점을 가져요. Serial.print()는 숫자를 전송할때, (숫자 -> ASCII 코드)로 변환을 해서 전송하는 반면에, Serial.write는 (숫자 -> 숫자) 그대로 전송합니다.
하지만, 이때 시리얼 모니터가 숫자를 ASCII 코드라고 생각해, (ASCII표에 해당하는 문자로 변환)하여 표시하죠.
그래서, Serial.print()를 이용하면 원래 숫자를 그대로 시리얼모니터에서 확인할 수 있지만, Serial.write()에서는 그렇게 확인할 수 없죠. 필요에 따라, 잘 활용하면 많은 도움이 될거예요~
6. 전체 .ino로 좌라락~!
int test = 45;
void setup() {
//Baud rate 설정
Serial.begin(9600);
}
void loop() {
while(Serial.available() > 0){
Serial.print("I`ve read");
Serial.println(Serial.read());
}
Serial.write(test);
Serial.println(test);
delay(500);
}
직접 위 코드를 실행시켜보고, 어떤 결과가 나오는지 확인해보세요~!
'전자전기공학 > Arduino' 카테고리의 다른 글
[아두이노] 풀다운 저항 연결하기 (1) | 2021.01.26 |
---|---|
초간단 아두이노 무드등 만들기 실습! (450) | 2020.08.03 |