코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
컴파일은 되는데 소스가 충돌이 난것 같습니다...
hshbc | 2019-03-30
|
|
---|---|
프로그램 : 아두이노 IDE 보드 : 아두이노 메가 센서 : 초음파 모듈, 나침반 컴파스 모듈, gps모듈 모터 : DC모터 1개 , 스텝 모터 1개 , 모터 드라이버 2개
안녕하세요.. 제가 위의 부품을 가지고 작품을 하나 만들고 싶어서 아두이노IDE를 이용하여 코딩을 하였는데, 각각의 센서에 대해서는 잘 작동을 하는데 모든 센서와 부품들을 합친 코드는 동작을 하지않습니다.... 시리얼 모니터에서 GPS모듈 값을 못읽는것 같습니다.... 고수님들 도와주세요...
Void loop 에서 gps모듈 데이터 파싱관련하여 if문이 3개가 나오는데 확인결과 3번째 if문을 받아들이지 못합니다 분명 센서 따로따로 하였을땐 문제가 없었는데 왜 그럴까요?? 소스코드는 밑에 첨부했습니다.
#include <Wire.h>
const int stepsPerRevolution = 200; // 스텝모터 1각에 1.8도 총 360도 char c = ""; String str = ""; String targetStr = "GPGGA";
void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println("Start GPS... "); gpsSerial.begin(9600); //초음파 센서 핀모드 설정 }
void loop() { // put your main code here, to run repeatedly: float duration, distance;
{ if(c == '\n'){ // \n 값인지 구분. Serial.println("2nd good "); if(targetStr.equals(str.substring(1, 6))){ // NMEA 의 GPGGA 값일시
// , 를 토큰으로서 파싱. int first = str.indexOf(","); int two = str.indexOf(",", first+1); int three = str.indexOf(",", two+1); int four = str.indexOf(",", three+1); int five = str.indexOf(",", four+1); // Lat과 Long 위치에 있는 값들을 index로 추출 String Lat = str.substring(two+1, three); String Long = str.substring(four+1, five); // Lat의 앞값과 뒷값을 구분 String Lat1 = Lat.substring(0, 2); String Lat2 = Lat.substring(2); // Long의 앞값과 뒷값을 구분 String Long1 = Long.substring(0, 3); String Long2 = Long.substring(3); // 좌표 계산. double LatF = Lat1.toDouble() + Lat2.toDouble()/60; float LongF = Long1.toFloat() + Long2.toFloat()/60; // 좌표 출력. Serial.println("3rd good "); Serial.println(LatF, 15); Serial.print("Long : "); Serial.println(LongF, 15); if(azimuth <random1-1 ){
} str = ""; }else{ // \n 아닐시, str에 문자를 계속 더하기 str += c; } } }
|
|
이전글 | Thinkspeak과 아두이노 esp8266사용할 때 초음파센서값이 0이 나오는 이유가 궁... | 2019-03-29 |
다음글 | Failed to read from DHT sensor! <-왜 이렇게 뜨나요?!!... | 2019-03-30 |