質問:
パルスセンサーを動かすと、なぜギャップが表示されるのですか?
Gabriele Giordano
2016-03-29 14:24:54 UTC
view on stackexchange narkive permalink

この方法でシリアルコードを変更しましたが、以前でも編集によってギャップが生じたとは思いません。

  //////// ///////////すべてのシリアル処理コード、/////////「serialVisual」変数で変更可能/////////「true」または「」に設定コードの開始時に宣言された場合はfalse '。 ///////// void serialOutput(){//シリアルの出力方法を決定します。 if(serialVisual == true){arduinoSerialMonitorVisual( '-'、Signal); //シリアルモニタービジュアライザーを作成する関数に移動します} else {sendDataToSerial( 'S'、Signal); // sendDataToSerial関数に移動します}} // BPMとIBIデータを出力する方法を決定しますvoidserialOutputWhenBeatHappens(){if(serialVisual == true){//シリアルモニタービジュアライザーを機能させるコード// ASCII Art Madness Serial.print(BPM ); Serial.println( ""); } else {sendDataToSerial( 'B'、BPM); //「B」プレフィックスを付けて心拍数を送信しますsendDataToSerial( 'Q'、IBI); //「Q」プレフィックスが付いたビート間の時間を送信します}} //データをパルスセンサー処理アプリ、ネイティブMacアプリ、またはサードパーティのシリアルリーダーに送信します。 void sendDataToSerial(char symbol、int data){Serial.print(symbol); Serial.println(data); } //シリアルモニタービジュアライザーを機能させるためのコードvoidarduinoSerialMonitorVisual(char symbol、int data){const int sensorMin = 0; //センサーの最小値、experimentconst int sensorMax = 1024で検出; //センサーの最大値。実験を通じて発見されましたintsensorReading = data; //センサー範囲を12オプションの範囲にマップします。intrange= map(sensorReading、sensorMin、sensorMax、0、11); //範囲の値に応じて//異なることを行います:switch(range){case 0:Serial.println( ""); }} 63636363636262626262626263626364636364646565656874788695105112123141167154136128123125123127132104939292898377736965707071  

すべてのコードはここにあります: https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino

投稿したコードには、役に立たないと思うコードがいくつかありますが、リンクされている理由で削除できません使用していることがわからない他の関数に使用されている変数に。心拍数の大きな変化も見られますが、これは確かに現実を反映していません。

おそらく、フォーマットが不適切な `switch()case:`ステートメントが原因です。 `Serial.println( '" ");`が何であるかを見てください。
それは私が物事を削除したところです
わかりました、そこでコードを削除しましたが、問題はありません。誤った心拍数を修正する方法について何かアイデアはありますか?
それはセンサーとその接続方法に問題がある可能性があり、接続が緩んでいる可能性があります。
おそらく私の指に十分にきつくないということですか?
私は緩い接続の電気配線側について話していましたが、指にしっかりと取り付けられていないと、指を緩めないようにしっかりと締めようとすると、読み取りが悪くなる可能性があります:)
おそらく、arduinoへのワイヤーもそれほど取り付けられていませんでした。
ワイヤーが緩んでいると、アナログの読み取りが非常にノイズになります
この場合のノイズは、私が持っていた値を取得することを意味しますか?
別のシリアルターミナルプログラム(br@yターミナル、Hterm、YATなど)を使用してみてください。これらのプログラムでは、タイムアウトを制御したり、改行を表示したりできます。
1 回答:
dhimaspw
2016-11-10 09:33:24 UTC
view on stackexchange narkive permalink

可能性の1つは、指を動かすと、センサーグリップが緩み、「ビート」がカウントされないことです。したがって、センサーは data = 0 を発行し、

  Serial.println( "");を発生させます。  

スイッチケース内。

これが最も可能性が高いと思われるため、賛成してください。コードの変更が問題ではなく、配線が損なわれていない場合は、それを引き起こしているのは動きである必要があります。昔の冗談のように、「医者、腕を上げると痛い」と医者は「それなら腕を上げないで」と言います。


このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...