?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 아두이노 소스 문법 질문드립니다

페이지 정보

작성자 아로나 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-09-06 15:33 조회1,115회 댓글1건

본문

void loop() {
if(Serial.available()){
  select=Serial.parseInt();
  
  switch(select){

    case 1: 
            Serial.println("드론의 현재위치 GPS 값");
            gpsvalue(gps); 
             
             Serial.println("===========================================================================");
            break;
    case 2:
    caseselect();
  
            Serial.println("===========================================================================");
            break;

    case 3:
             Serial.println("입력된 위도,경도 : ");
             if(latitude==0) {
              Serial.println("입력되지 않았습니다.");
    }
    if(latitude!=0){
    Serial.print(latitude)  ;
    Serial.print(wd);
    Serial.print(" , ");
    Serial.print(longitude  );
    Serial.println(kd);
    }
     
     Serial.println("===========================================================================");
     break;

     // case 4 입력값 초기화
    

    default:
    Serial.println("잘못된 입력입니다 1: 현재 GPS값 , 2: GPS값 입력모드, 3: 입력된 GPS 값 확인");
     Serial.println("===========================================================================");
    break;
  }
  }
}
void caseselect()
{
   Serial.println("원하는 GPS 값 입력 ");
    Serial.println("위도입력(xxxx.xxxx) : ");
        while(Serial.available() ==0) {}
        latitude=Serial.parseInt();
         Serial.println(latitude);
         
    Serial.println("위도방위 : ");
       while(Serial.available() ==0) {}
        if(wd='E'||'W'||'S'||'N'){
        wd = Serial.read();
        Serial.println(wd);}
        
    Serial.println("경도입력(xxxx.xxxx) :" );
        while(Serial.available() ==0) {}
        longitude = Serial.parseInt();
        Serial.println(longitude);
        
    Serial.println("경도방위 : ");
       while(Serial.available() ==0) {}
        kd = Serial.read();
        Serial.println(kd);
}

------------------------------------------------------------------------------------------------------------

case 2번에서 입력시에 xxxx.xxxx 로 입력을 하고싶은데 배열을 어떻게 사용해야 할지 모르겠습니다

또 위도방위 Serial.available에서 읽지 않은 버퍼를 읽어올때  E W S N 이 아닐경우 다시 입력하라고 하고싶은데 if 문을 써야하나요?

Serial.available >0 을 하면 위도입력에서 경도방위까지 한번에 슥 나와버려서 고민하고 있습니다..

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

일단 아래 코드가 잘못되었습니다. 아래처럼 작성하시면 데이터가 있을 때 아무런 작업도 하지 않고 버퍼 확인만 계속하게 됩니다.
while(Serial.available() ==0) {}
아래 코드도 문제가 있습니다.
if(wd='E'||'W'||'S'||'N'){
        wd = Serial.read();
        Serial.println(wd);
}
아래처럼 바뀌어야 합니다.
while(Serial.available() ==0) {
    char wd = Serial.read();
    if(wd=='E' || wd=='W' || wd=='S' || wd=='N') {
        Serial.println(wd);
    }
}