ページ 11

前の状態との比較

Posted: 2018年4月23日(月) 12:46
by c素人
加速度センサを使用して衝突検知(衝撃検知)を行う考えです。

前の状態と今の状態を比較して、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;


   }

Re: 前の状態との比較

Posted: 2018年4月24日(火) 21:59
by みけCAT
  • ~ADC系の関数の実装も仕様も載っていません。
    返ってきている値は期待通りですか?
  • ADreadZやprev_zの型がわかりません。
    符号なし整数同士の引き算は、負の数のかわりに大きな正の数になることがあります。