BASIC4MCU | 질문게시판 | 블루투스 관련 코드 도와주세요
페이지 정보
작성자 scape 작성일2022-05-27 15:50 조회279회 댓글0건본문
어느부분이 블루투스 관련된 부분인가요?
압력센서에 충격값 생기면 이거를 앱을 통해서 충격값이랑 gps 값 확인하려는데 제가 초보라 이해가 잘 안 되네요,,
----------------------------------------------------------------------------------------------------------------
#include <SoftwareSerial.h>
const int FSR_PIN = A0;
const int FSR_LIMIT = 120;
// Serial1 : Gps 모듈
// tx - 19
// rx - 18
// vcc - 5v
// gnd - gnd
// Serial2 : 블루투스 모듈
// tx - 17
// rx - 16
// vcc - 5v
// gnd - gnd
char c = "" ; // Wn 인지 구분 및 str에 저장.
String str = ""; // \n 전까지 c 값을 저장.
String targetStr = "GPGGA"; // str의 값이 NMEA의 GPGGA 값인지 타겟
double LatF = 0;
float LongF = 0;
void setup() {
Serial.begin(9600);
// GPS시리얼
Serial1.begin(9600);
// 블루투스 시리얼
Serial2.begin(9600);
}
void loop() {
if(Serial1.available()) { // gps 모듈이 정상 작동중일 경우,
c=Serial1.read(); // 센서의 값 읽기
if(c == '\n'){ // \n 값인지 구분.
// \n 일시. 지금까지 저장된 str 값이 targetStr과 맞는지 구분
if(targetStr.equals(str.substring(1, 6))){
// NMEA 의 GPGGA 값일시
Serial.println(str);
// , 를 토큰으로서 파싱.
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);
// 좌표 계산
LatF = Lat1.toDouble() + Lat2.toDouble()/60;
LongF = Long1.toFloat() + Long2.toFloat()/60;
// 좌표 출력
//Serial.print("Lat : ");
//Serial.println(LatF, 15);
//Serial.print("Long : ");
//Serial.println(LongF, 15);
}
// str 값 초기화
str = "";
}else{ // \n 아닐시, str에 문자를 계속 더하기
str += c;
}
}
int fsr_val = analogRead(FSR_PIN); //압전 센서의 데이터 받아오기
if(fsr_val > FSR_LIMIT) { // 압전센서 값이 일정 값 이상일 경우,
Serial.println("%" + String(LatF, 15) +","+ String(LongF, 15) + "?");
}
}
댓글 0
조회수 279등록된 댓글이 없습니다.