前の状態との比較

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
c素人

前の状態との比較

#1

投稿記事 by c素人 » 7年前

加速度センサを使用して衝突検知(衝撃検知)を行う考えです。

前の状態と今の状態を比較して、0以上であれば衝撃と判断するプログラムです。
(しきい値0の妥当性は、まだ確認できていません。)

↓のコードで試しているのですが、
1.加速度センサを動かしていない状態でも、衝撃検知と判断してしまいます。(LEDが点灯)
2. 条件式を >10000 としても、衝撃検知と判断してしまいます。(LEDが点灯)
⇒加速度センサは10bit A/Dで取得しているため、 >10000はあり得ないのですが、これでもLEDが点灯してしまいます。


何かコードに不備があるのでしょうか。

コード:

   while(1)
   {
   //加速度センサZ軸データ取得
   SetChanADC(ADC_CH0);
   ConvertADC();
   while( BusyADC());
   ADreadZ = ReadADC();

   if ( prev_z-ADreadZ  >0){
       LED1=1;            //LED点灯
       delay_ms(100);
       LED1=0;            //LED消灯
       delay_ms(100);
   }
       prev_z = ADreadZ;


   }

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 前の状態との比較

#2

投稿記事 by みけCAT » 7年前

  • ~ADC系の関数の実装も仕様も載っていません。
    返ってきている値は期待通りですか?
  • ADreadZやprev_zの型がわかりません。
    符号なし整数同士の引き算は、負の数のかわりに大きな正の数になることがあります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る