3_3_Serial if에서
====================
int a = 49;
int b = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available()) {
b = Serial.read();
Serial.println(b);
if(a==b){
Serial.println("Hello World!");
}
else{
Serial.println("Hello!");
}
}
}
==========================
결과
49
Hello World!
10
Hello!
48
Hello!
10
===============
1혹은 0을 전송하면, 뒤에 'Hello! 10'이 전송됩니다. 제공된 예제에서도 마찬가지고요.
아스키코드로 10이 \n이던데, 이 값이 왜 자동으로 넘어갈까요? 이 값이 나오지 않도록 하려면 어떻게 하면 되나요?
댓글목록
작성자 사령관
작성일 2021-12-20
평점
Serial.read()는 값을 읽을때 데이터의 맨 처음 바이트값을 인식하게 됩니다.
예를들어 '10'이라는 숫자를 인식할 경우에는 1, 0 으로 인식해 총 두번의 값이 들어가는 원리입니다.
말씀하신대로 1 or 10 등의 숫자를 인식하려면 Serial.read() 함수 보단, Serial.parseInt()함수로 바꿔서 사용하면 문의해주신 내용이 해결됩니다.
예제코드에서 b=Serial.read(); -> b=Serial.parseInt(); 로 바꿔서 업로드 및 테스트해보시길 바랍니다.