정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노에서 2자리 수 이상의 숫자 를 받아오기 예제 질문
김택수 | 2016-06-29

char buffer[20];               //통신을 할때 buffer배열에 전송받은 데이터 입력
char bufferIndex = 0; 

void setup() {
  Serial.begin(9600);   //시리얼 통신 초기화
}


void loop() {
  while(Serial.available()) {
    buffer[bufferIndex]  = Serial.read();   //시리얼 통신으로 버퍼배열에 데이터 수신
    bufferIndex++;                          //데이터 수신 후 버퍼 인덱스 1 증가
  }         
  int pos = atoi(buffer);                   //atoi()함수로 char값을 int값으로 변환
  if(pos != 0) {
    Serial.print("Input data : ");
    Serial.println(pos);                    //int값으로 변환된 데이터 출력
  
    int plus = pos+50;    
    Serial.print("plus 50 : ");
    Serial.println(plus);                   //출력된 데이터에 50을 더하여 출력


  }
  delay(100); 
  
  //버퍼 초기화
  for(int a=0;a<21;a++) {
    buffer[a] = NULL;
  }

}

 

질문1. 예제를 그대로 복사하여 아두이노에 업로드 시켰더니 한번만 2자리수 입력이 되고 2번 이상은 입력되지않습니다...

 

질문2. 시리얼통신(Serial)을 블루투스 통신(BTSerial)으로 바꿀려면 Serial을 BTSerial만 바꿔주면 응용 가능한가요?

 

(아두이노 1.6.9버전 사용중입니다.)

프로필사진

수박쨈 2016-06-30 10:43:46

  for(int a=0;a<21;a++) {
    buffer[a] = NULL;
  }

위 코드 아래에 bufferIndex = 0;을 써주면 됩니다.

bufferIndex를 초기화 하는 부분이 없네요.

 

시리얼 통신을 블루투스 통신으로 사용하시려면 SoftwareSerial.h 헤더파일을 불러오시고

BT를 사용하기 위한 BTSerial을 선언해주셔야합니다.

SoftwareSerial BTSerial(2,3); 이런식으로 선언해주시고 나면 그 다음은 말씀해주신대로 Serial을 BTSerial로만 바꿔주시면 될거같네요.

프로필사진

김택수 2016-06-30 12:58:30

잘되네요. 감사합니다!

이전글   |    아두이노와 비콘이 서로가 연결이가능한지 알고싶습니다. ... 2016-06-29
다음글   |    조이스틱 센서 쉴드와 엔트리 하드웨어 연결 탭이 드디어 올라왔습니다.... 2016-06-29