2261807_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2261807_ja-JP

2261807_ja-JP

FXLS8974CF、FXLS8974_Arduino Lib、しきい値とデバウンス値の設定方法

目標: Xの動きが検出されるとすぐにLED_X(高)をトリガーし、Xの動きが止まるまで高を維持する

しきい値とデバウンスの設定に問題がある

製品 FRDM-STBI-A8974 シールドを Arduino Uno (3.3V) にコネクテッドFXLS8974CF、3軸低g加速度センサ、データシート

FXLS89xx_Arduino ライブラリの使用FXLS89xx_Arduino/README.md (メイン) · ryraki/FXLS89xx_Arduino · GitHub

シリアルで見たもの:

WHO_AM_I = 0x86

19

19

E0


0x86 - 良好

19、19、E0 はライブラリから出力されたエラーだと思いますが、その情報はシリアルに送信されていません。

src 変数に正しい情報が返されません。何が足りないのか分かりません。

Z 軸に変更すると、LED はハイのままになり、Y 軸にスイッチすると LED は時々点滅します。_XYZ では、LED が非常に速くオン/オフに点滅しますが、_X__ では何も表示されません。何かを適切に初期化していないようです。正しい方向へのどんな刺激でも大歓迎です。

コード:

#include "FXLS89xx_Arduino.h"
#include 

#define FXLS8974CF_ADDR 0x18
FXLS89xx fxls89xx;

int LED_X = 8;
int INT1_PIN = 2;

void setup() 
{
  pinMode(LED_X, OUTPUT);
  pinMode(INT1_PIN, INPUT);

  Serial.begin(115200);
  Wire.begin();

  uint8_t whoami = fxls89xx.init();
  Serial.print("WHO_AM_I = 0x");
  Serial.println(whoami, HEX);

  fxls89xx.wake_odr = FXLS89xx::_6_25HZ;
  fxls89xx.wake_pm  = FXLS89xx::_HPM;
  fxls89xx.sensor_range = FXLS89xx::_2G;
  
  
  // Absolute mode, X-axis, ±25 mg thresholds, debounce=5 samples
  fxls89xx.sdcd(FXLS89xx::_ABSOLUTE, FXLS89xx::_X__, 25.0f, 25.0f, 5);
}

void loop()
{
  // Poll INT1 pin
  if (digitalRead(INT1_PIN))
  {
    uint8_t src=fxls89xx.reg_r(FXLS89xx::_SDCD_INT_SRC1);
    //Serial.println(src);
    if (src & 0x01)
    {
      digitalWrite(LED_X, HIGH);
      Serial.println("Motion detected on X-axis!");
    }
  if (src & 0x08)
    {
      digitalWrite(LED_X, LOW);
      Serial.println("Motion ended on X-axis.");
    }
  }
   delay(50); 
}
Re: FXLS8974CF, FXLS8974_Arduino Lib and how to set thresholds and debounce values

こんにちは、グレン。

SDCD を使用して X 軸の動きを検出するには、SDCD_INT_SRC1 レジスタの正しいビットを確認してください。
- OT_EAは閾値外イベント情報がアクティブであることを示します
- X_OT_EFはX軸が原因であることを確認します

また、割り込みを有効にして適切にルーティングします。
- INT_EN[SDCD_OT_EN] = 1 を設定し、INT_PIN_SEL 経由で INT1 にルーティングします。
- SENS_CONFIG4 をアクティブハイ、プッシュプル出力用に設定する(またはハードウェアに合わせて設定する)

最後に、fxls89xx.run() を呼び出します。スタンバイ モードを終了するには、構成後に行います。Arduino ライブラリのしきい値は mg 単位で、デバウンス数は ODR 期間に基づいています。SDCD_INT_SRC1 を読み取ると、ラッチされたフラグがクリアされます。

お役に立てれば幸いです。

BRs、トーマス

标记 (1)
无评分
版本历史
最后更新:
‎02-04-2026 07:42 AM
更新人: