반응형
목차
Arduino : Serial Communication 으로 PC와 데이터 주고 받기
이번 시간에는 Serial 통신 방법을 사용해서 컴퓨터의 USB 포트를 통해 메세지(Message)를 주고 받는 방법을 알아보겠습니다. 하드웨어 구성은 링크를 참조 하시면 됩니다. (https://scribblinganything.tistory.com/512)
코드는 간단하기 때문에 아래 예제 코드를 통해 설명하겠습니다.
예제 코드>>
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
}
void loop() {
if (Serial.available() !=0 )
{
String a_var = Serial.readStringUntil('\n');
String b_var = "This is Arduino UNO board : ";
Serial.println(b_var + a_var);
}
}
1~6번 라인: Serial 통신을 연결합니다.
9번 라인: available 함수를 통해서 버퍼(Buffer)에 값이 들어오면 if 문을 실행합니다.
11번 라인: 들어오는 문자 (Char, Character)가 개행문자 엔터(Enter) 값인 '\n'이 들어오면 문자열 변수 a_var에 값을 채워서 보냅니다.
12번 라인: 보드에서 나오는 메세지에 추가합니다.
13번 라인: PC로 해당 메세지를 보내 줍니다.
결과>>
Hello UNO라고 컴퓨터에서 입력하고 엔터키를 입력하였습니다. 그리고 보드에서 위와 같이 메세지를 보내 주었습니다.
참고로 앞서 코드에서 11번 라인을 아래와 같이 작성할 경우 Warning이 발생합니다.
String a_var = Serial.readStringUntil("\n");
큰 따움표는 문자열(String)을 받기 위해 사용되기 때문에 위와 같이 작성하면 아래와 같은 에러 메세지가 발생하니 작은 따음표를 사용해서 문자(Character를 받도록 합니다.
C:\Users\forgo\Documents\Arduino\sketch_may03a\sketch_may03a.ino: In function 'void loop()':
C:\Users\forgo\Documents\Arduino\sketch_may03a\sketch_may03a.ino:11:47: warning: invalid conversion from 'const char*' to 'char' [-fpermissive]
String a_var = Serial.readStringUntil("\n");
^
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29:0,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,
from sketch\sketch_may03a.ino.cpp:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:108:10: note: initializing argument 1 of 'String Stream::readStringUntil(char)'
String readStringUntil(char terminator);
^~~~~~~~~~~~~~~
반응형
'아두이노 Arduino' 카테고리의 다른 글
[아두이노]메모리가 부족할 때 처리방법(프로그램 저장 공간, 전역 변수, 지역변수) (0) | 2022.05.09 |
---|---|
[아두이노]메모리 종류와 기능 (Program Memory, Flash Memory, EEPROM) (0) | 2022.05.08 |
[아두이노] String함수: toInt, toFloat, toUpperCase, toLowerCase (0) | 2022.05.02 |
[아두이노] String함수: compareTo, equals, equalsIgnoreCase, length, replace (0) | 2022.04.29 |
[아두이노] 문자열, 정수, 실수 크기 비교 하기 (Comparison) (0) | 2022.04.28 |