아두이노 Serial Monitor(시리얼 모니터)에 값을 입력해서
출력하거나 저장해 사용하려고 함수를 만들려고 했는데요,
Serial Monitor에 입력된 값을 바로 Serial.read()나 Serial.parseInt()등 함수로 가져오면 안되고,
입력할때까지 Serial.available()을 돌리며 확인해보아야 합니다.
Serial.available()함수는 현재 읽을 수 있는 바이트 수를 리턴하기 때문에
보통 loop() 에 두고 계속 확인해주더라구요.
그래서 이를 이용한 함수를 만들려고 loop문 while을 사용 하였습니다.
while문 안에 Serial.available()함수를 계속돌려 값을 입력할때까지 대기하고, 원하는 입력 까지 반복하고, 혹은 입력된 값이 특정 값이면 다음 기능을 수행할 수 있도록 break; 로 while문을 빠져나오도록 했습니다.
String 입력 & 저장
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
putString();
}
void putString() {
Serial.println(" ** Method Start ** ");
while (1) {
if (Serial.available()) {
String inString = Serial.readStringUntil('\n');
Serial.println(inString);
if (inString== "END") {
Serial.println( " ** Method End ** ");
break;
}
}
}
}
이와 같이 String 값을 저장하기 위해 Serial.readStringUntil('₩n')을 사용해
엔터전까지의 String값을 저장해 사용할 수 있습니다. "END"가 나오면 입력을 끝내도록 하였습니다.
보통 String으로 저장하면 숫자도 문자로("5", "0"등) 구분할 수 있어서 많이 사용하고 있습니다
정수 입력 & 저장
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
putInt();
}
void putInt() {
Serial.println(" ** Method Start ** ");
while (1) {
if (Serial.available()) {
int inNum = Serial.parseInt();
Serial.println(inNum);
if (inNum == 0 ) {
Serial.println( " ** Method End ** ");
break;
}
}
}
}
정수 입력은 Serial.parseInt()함수를 사용하였구요, parseInt()함수를 사용하면
새 줄 입력시 0이 포함되어 line ending없음으로 바꾸고 입력하였습니다.
그외에도 parseFloat()를 사용하여 실수 값을 저장할 수 있고,
그냥 Serial.read()로 바이트 단위로 읽을 수도 있습니다.
'그 외 코드 > 아두이노' 카테고리의 다른 글
아두이노 피에조 부저(Piezo Buzzer) 멜로디 모음 (0) | 2020.01.02 |
---|