본문 바로가기

그 외 코드/아두이노

아두이노 Serial Monitor 입력 값 출력, 저장 하는 함수 만들기

728x90
반응형

아두이노 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()로 바이트 단위로 읽을 수도 있습니다.

728x90
반응형