안녕하세요.
학교 프로젝트용으로 본 심박측정기를 구매했습니다.
현재 아두이노 레오나르도 보드를 사용 중인데요.
심박측정기를 만든 회사에서 제공하는 소스는 UNO보드를 기준으로 만들어졌더군요.
그래서 Interrupt Setup부분을
Timer1은 딴데서 많이 사용할 거 같아서 일부러 Timer3을 기준으로 변경했습니다.
void interruptSetup(){
// Initializes Timer2 to throw an interrupt every 2mS.
TCCR3A = 0x00; // DISABLE PWM ON DIGITAL PINS 3 AND 11, AND GO INTO CTC MODE
TCCR3B = 0x0C; // DON'T FORCE COMPARE, 256 PRESCALER
OCR3A = 0x7C; // SET THE TOP OF THE COUNT TO 124 FOR 500Hz SAMPLE RATE
TIMSK3 = 0x02; // ENABLE INTERRUPT ON MATCH BETWEEN TIMER2 AND OCR2A
sei(); // MAKE SURE GLOBAL INTERRUPTS ARE ENABLED
}
ISR(TIMER3_COMPA_vect){ // triggered when Timer2 counts to 124
cli(); // disable interrupts while we do this
Signal = analogRead(pulsePin); // read the Pulse Sensor
sampleCounter += 2; // keep track of the time in mS with this variable
int N = sampleCounter - lastBeatTime;
이렇게 수정했는데, 뭔가 값은 나오는데 제대로된 심박값이 나오지는 않습니다.
어두운곳 밝은곳 위치를 바꿔보면 센서값은 다르게 나오는게 확인되는데,
역시 심박값은 제대로 나오질 않네요.
센서가 잘못된건지... 제가 Coding을 잘못한건지 확인좀 부탁드립니다...
회원에게만 댓글 작성 권한이 있습니다.