정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

두 센서를 사용하기 위한 코드 합성 질문입니다.... (GPS센서, 심장박동센서)
열정공돌이 | 2019-11-07

제가 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
  }

 

 

 

입니다...

고수님들 제발 도와주세요 ㅠㅠㅠ 공부해도 알수가 없습니다 ㅠㅠㅠㅠㅠㅠ

이전글   |    아두이노 드론 실행오류 2019-11-06
다음글   |    아두이노로 충격알림팔찌를 만들려고하려는데 모르겠습니다. ... 2019-11-07