제가 GPS센서(GPS6mv-2), 심장박동센서(pulsesensor)를 같이 사용하려고 합니다...
이 두 코드를 합쳐서 만들려고 하는데... 합쳐도 심장박동 센서에 관한 내용만 시리얼 모니터에 나올뿐입니다...
그리고 GPS센서의 기본 baud는 9600이고, 심장박동 센서는 115200이어서 GPS센서에 맞게 9600으로 변경하였습니다
GPS센서는
#include
SoftwareSerial gpsSerial(10,11);
// gps - arduino
// tx - 10
// rx - 11
// vcc - 5v
// gnd - gnd
char c = ""; // Wn 인지 구분 및 str에 저장.
String str = ""; // \n 전까지 c 값을 저장.
String targetStr = "GPGGA"; // str의 값이 NMEA의 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:
if(gpsSerial.available()) // gps 센서 통신 가능?
{
c=gpsSerial.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);
// 좌표 계산.
double LatF = Lat1.toDouble() + Lat2.toDouble()/60;
float 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;
}
}
}
//[출처]https://lamlic36.tistory.com/3
입니다...
그리고 심장박동센서는 기본으로 공개하는데 파일이 4개가 있어 올리지 못한점 죄송합니다...
그리고 제가 심장박동 센서의 메인 소스파일에 합친 소스는
/* Pulse Sensor Amped 1.5 by Joel Murphy and Yury Gitman http://www.pulsesensor.com
---------------------- Notes ---------------------- ----------------------
This code:
1) Blinks an LED to User's Live Heartbeat PIN 13
2) Fades an LED to User's Live HeartBeat PIN 5
3) Determines BPM
4) Prints All of the Above to Serial
Read Me:
https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino/blob/master/README.md
---------------------- ---------------------- ----------------------
*/
#define PROCESSING_VISUALIZER 1
#define SERIAL_PLOTTER 2
// Variables
int pulsePin = 0; // Pulse Sensor purple wire connected to analog pin 0
int blinkPin = 13; // pin to blink led at each beat
int fadePin = 5; // pin to do fancy classy fading blink at each beat
int fadeRate = 0; // used to fade LED on with PWM on fadePin
// Volatile Variables, used in the interrupt service routine!
volatile int BPM; // int that holds raw Analog in 0. updated every 2mS
volatile int Signal; // holds the incoming raw data
volatile int IBI = 600; // int that holds the time interval between beats! Must be seeded!
volatile boolean Pulse = false; // "True" when User's live heartbeat is detected. "False" when not a "live beat".
volatile boolean QS = false; // becomes true when Arduoino finds a beat.
// SET THE SERIAL OUTPUT TYPE TO YOUR NEEDS
// PROCESSING_VISUALIZER works with Pulse Sensor Processing Visualizer
// https://github.com/WorldFamousElectronics/PulseSensor_Amped_Processing_Visualizer
// SERIAL_PLOTTER outputs sensor data for viewing with the Arduino Serial Plotter
// run the Serial Plotter at 115200 baud: Tools/Serial Plotter or Command+L
static int outputType = SERIAL_PLOTTER;
void setup(){
pinMode(blinkPin,OUTPUT); // pin that will blink to your heartbeat!
pinMode(fadePin,OUTPUT); // pin that will fade to your heartbeat!
Serial.begin(9600); // we agree to talk fast!
interruptSetup(); // sets up to read Pulse Sensor signal every 2mS
// IF YOU ARE POWERING The Pulse Sensor AT VOLTAGE LESS THAN THE BOARD VOLTAGE,
// UN-COMMENT THE NEXT LINE AND APPLY THAT VOLTAGE TO THE A-REF PIN
// analogReference(EXTERNAL);
}
// Where the Magic Happens
void loop(){
serialOutput() ;
if (QS == true){ // A Heartbeat Was Found
// BPM and IBI have been Determined
// Quantified Self "QS" true when arduino finds a heartbeat
fadeRate = 255; // Makes the LED Fade Effect Happen
// Set 'fadeRate' Variable to 255 to fade LED with pulse
serialOutputWhenBeatHappens(); // A Beat Happened, Output that to serial.
QS = false; // reset the Quantified Self flag for next time
}
ledFadeToBeat(); // Makes the LED Fade Effect Happen
delay(1000); // take a break
}
void ledFadeToBeat(){
fadeRate -= 15; // set LED fade value
fadeRate = constrain(fadeRate,0,255); // keep LED fade value from going into negative numbers!
analogWrite(fadePin,fadeRate); // fade LED
}
입니다...
고수님들 제발 도와주세요 ㅠㅠㅠ 공부해도 알수가 없습니다 ㅠㅠㅠㅠㅠㅠ
|