加速度センサを使用して衝突検知(衝撃検知)を行う考えです。
前の状態と今の状態を比較して、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;
}