NAVER

질문 아두이노 Serial.available 함수에 관하여.. 채택 100% / 내공팍팍
비공개 조회수 3,033 작성일2016.08.18
아두이노에서 available 이 입력한 바이트 수만큼 돌아가는지 확인해볼려고 한번 만들어봤는데
변수 i 가 바이트 수만큼 증가하긴하는데 하나씩 증가안하고 엄청 튀다가 증가하네요 이유가도대체 뭘까요?
 int i=0;
void setup() {
  Serial.begin(9600);
}
void loop() {
  char my; 
  if(Serial.available())
  {
    Serial.print(Serial.available());  
    Serial.println();
    my=Serial.read();

    //Serial.print(my);
    i++;
  }
    Serial.println(i);
   delay(100);
}

 


프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
강릉바다
지존
프로그래밍, MS엑셀, 베이직 분야에서 활동
본인 입력 포함 정보
안녕하세요?

정상입니다.
우선 스케치를 조금 정리했습니다.
동일한 내용이지만 보다 알기 쉽게 했습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int i = 0;
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  char my;
  if (Serial.available())
  {
    Serial.print("Serial.available() : ");
    Serial.println(Serial.available());
    my = Serial.read();
    i++;
  }
  Serial.print("i : ");
  Serial.println(i);
  delay(1000);
}
cs

이제 실행 결과를 보세요.

 

처음에 i값이 0입니다.
그리고 제가 123을 시리얼 전송했습니다.
그랬더니 3바이트를 읽을 수 있다고 표시하고
1바이트를 읽고 i값을 증가시켜 1이 되고,
다시 남은 2바이트를 읽을 수 있다고 표시하고
1바이트를 읽고 i값을 증가시켜 2가 되고,
남은 1바이트를 읽을 수 있다고 표시하고
마지막 1바이트를 읽고 i값을 증가시켜 3이 됩니다.

도움이 되셨으면 좋겠습니다.

감사합니다.

2016.08.18.

  • 채택

    질문자가 채택한 답변입니다.

  • 출처

    본인작성

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.