コンパイルは通りますが、生体信号を取得する前からブザーが鳴ってしまいます。
詳しい方いらっしゃいましたら教えていただけますと幸いです。
よろしくお願いいたします。
int i=0 ; //配列番号の管理 int j=0 ; //フラグ管理 //プログラム起動時間の変数 unsigned long ti ; unsigned long to ; unsigned long t[200] ; int threshold ; //閾値 int a=0 ; //アナログ電圧の変数 int x=0 ; //一つ前のアナログ値を入力 #define BEAT 300 // 音の長さを指定 #define PINNO 12 // 圧電スピーカを接続したピン番号 void setup(){ //put your setup code here, to run once; } void loop(){ //配列の数が200なのでエラーを出さないようにする ti=millis(); //起動時間の代入 a=analogRead(A5); //アナログ入力の代入 //閾値を決める if(a-x>0){ x=a;//波形の山が下り始めるところを見つける if(x-threshold>0){ threshold=a; //R波のみ判定 } } //アナログ入力が閾値を超えたときに時間を入れるに格納 if(a>=0.8*threshold&&j==0){ //4.9mV*20=98mVの時に分岐 Serial.begin(9600); Serial.print("count"); Serial.println(i); t[i]=millis(); //i=0の時は計算できないので分岐 if(i!=0){ to=t[i]-t[i-1]; //入れるに格納された秒数からRR間隔を計算 //USVBケーブルを通してPCに出力 Serial.println("RR"); Serial.println(to); } i++; //次の配列へ j=1; //一度とったのでフラグをオンに Serial.end(); //通信終了 } //フラグがオンの時に閾値を下回った時にオフにする if(a< 0.8*threshold&&j==1) { j=0; } while(to < 0.6){ //toの値が0.6秒以下の時ブザーを鳴らす tone(PINNO,262,BEAT) ; delay(BEAT) ; delay(1200) ; //1.2秒間隔で鳴らす } }