BASIC4MCU | 질문게시판 | 답변 : 블루투스 관련 코드 도와주세요
페이지 정보
작성자 master 작성일2022-05-27 16:49 조회557회 댓글0건본문
#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 값인지 구분.
if(targetStr.equals(str.substring(1, 6))){ // \n 일시. 지금까지 저장된 str 값이 targetStr과 맞는지 구분
// 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);
String Lat = str.substring( two+1, three); // Lat과 Long 위치에 있는 값들을 index로 추출
String Long = str.substring(four+1, five);
String Lat1 = Lat.substring(0, 2); // Lat의 앞값과 뒷값을 구분
String Lat2 = Lat.substring(2);
String Long1 = Long.substring(0, 3); // Long의 앞값과 뒷값을 구분
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) + "?");
}
}
Serial2 가 블루투스인데 초기화만 시키고 루프문에서 사용하지 않았습니다.
루프문 제일 아래에서
압력값이 FSR_LIMIT 보다 크면 GPS의 LatF,LongF 를 시리얼모니터로 전송하고 있습니다.
같은 내용을 블루투스로도 전송하고 싶다면
Serial.println("%" + String(LatF, 15) +","+ String(LongF, 15) + "?"); // 시리얼모니터로
Serial2.println("%" + String(LatF, 15) +","+ String(LongF, 15) + "?"); // 블루투스로
복사해서 Serial을 Serial2로 수정만 해주면 됩니다.
댓글 0
조회수 557등록된 댓글이 없습니다.