#include <SoftwareSerial.h> //블루투스 통신 헤더파일
#include <Wire.h>
#include <SPI.h> //SPI통신 헤더파일
#include <ADXL362.h> //가속도센서 헤더파일
#include <BH1750.h> //조도센서 헤더파일
SoftwareSerial mySerial(4,7); // RX, TX //블루투스 핀 정의
BH1750 lightMeter; //조도센서 lightMeter으로 정의
ADXL362 xl; //가속도센서 xl로 정의
//가속도 16비트로 받기
int16_t temp;
int16_t X, Y, Z, Temperature;
unsigned long previousMillis = 0; //마지막으로 측정된 시간
const long interval = 10000; //10초간 시간 간격
// 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
// these variables are volatile because they are used during the interrupt service routine!
volatile int BPM; // used to hold the pulse rate
volatile int Signal; // holds the incoming raw data
volatile int IBI = 600; // holds the time between beats, the Inter-Beat Interval
volatile boolean Pulse = false; // true when pulse wave is high, false when it's low
volatile boolean QS = false; // becomes true when Arduoino finds a beat.
void setup() {
pinMode(blinkPin,OUTPUT); // pin that will blink to your heartbeat!
pinMode(fadePin,OUTPUT); // pin that will fade to your heartbeat!
//스마트폰 블루투스
Serial.begin(115200);
while(!Serial){
;
}
interruptSetup(); // sets up to read Pulse Sensor signal every 2mS
// UN-COMMENT THE NEXT LINE IF YOU ARE POWERING The Pulse Sensor AT LOW VOLTAGE,
// AND APPLY THAT VOLTAGE TO THE A-REF PIN
//analogReference(EXTERNAL);
//아두이노 블루투스
mySerial.begin(115200);
while (!mySerial) {
; // wait for serial port to connect. Needed for native USB port only
}
//조도센서 시리얼 begin
lightMeter.begin();
//가속도 시리얼 begin
xl.begin(10); // Setup SPI protocol, issue device soft reset
xl.beginMeasure(); // Switch ADXL362 to measure mode
}
void loop() {
unsigned long currentMillis = millis(); //현재 시간
int count=0; //count변수 선언
uint16_t ADXL362_sum=0;
uint16_t BH1750_sum=0;
//===========================심박센서============================================================
sendDataToProcessing('S', Signal); // send Processing the raw Pulse Sensor data
if (QS == true){ // Quantified Self flag is true when arduino finds a heartbeat
fadeRate = 255; // Set 'fadeRate' Variable to 255 to fade LED with pulse
sendDataToProcessing('B',BPM); // send heart rate with a 'B' prefix
sendDataToProcessing('Q',IBI); // send time between beats with a 'Q' prefix
QS = false; // reset the Quantified Self flag for next time
}
delay(20); // take a break(0.02초 마다 센서읽음)
//=============================가속도센서 값 보여주기==============================================
/*
xl.readXYZTData(X, Y, Z, Temperature);
Serial.print("XVALUE=");
Serial.print(X);
Serial.print("\tYVALUE=");
Serial.print(Y);
Serial.print("\tZVALUE=");
Serial.print(Z);
Serial.print("\tTEMPERATURE=");
Serial.println(Temperature);
delay(100); // Arbitrary delay to make serial monitor easier to observe
*/
//====================================================================================================
//===========조도센서,가속도센서 5분동안 값 저장시켜 저장시킨 값을 평균으로 환산하여 값 보내기====================
if(currentMillis - previousMillis >= interval){
uint16_t lux = lightMeter.readLightLevel();
xl.readXYZTData(X, Y, Z, Temperature);
ADXL362_sum+=X,Y,Z,Temperature;
BH1750_sum+=lux;
count++;
if(count == 30){
float ADXL362_avg = ADXL362_sum / count;
float BH1750_avg = BH1750_sum / count;
count = 0;
ADXL362_sum=0;
BH1750_sum=0;
Serial.print("Light: ");
Serial.print(BH1750_avg);
}
previousMillis = currentMillis;
}
}
//=============================================================================================
//======================심박센서=================================================================
void sendDataToProcessing(char symbol, int data ){
Serial.print(symbol); // symbol prefix tells Processing what type of data is coming
Serial.println(data); // the data to send culminating in a carriage return
}
이 소스는 일단 조도센서값과 가속도센서값을 10초마다 값을받아 누적시켜 평균을구하여 5분마다 블루투스로 전송하는 소스를 짰습니다..주석처리한 조도,가속도센서 5분마다 평균내서 값보내기 쪽봐주세요... 보시고 조언부탁드립니다... 그리고 제가 심박,조도,가속도 값을 이렇게 10초마다 평균을 환산하여 5분마다 통신을할려는데요 한번에 스마트기기로 전송하는 방법을 알고싶습니다... 스마트워치를 만들고있는데요 조금 도와주세요 여러분..
|
다음글 |
라인트레이서 센서값 저장 및 불러오기
|
2016-11-18 |