ラジコンカーを製作しています。
送信側から送られてくる進行方向を表す信号「Dir」に応じて、後退・前進・停止を行います。
このラジコンカーにオプション機能を追加したいと考えています。
ラジコンカーの底面に白黒を検知できるセンサを配置し、
黒い場所を5回通過したら、送信側にコマンドを送る。という動作を行いたいです。
センサの状態をsという変数で監視して、
s=PORTA &0x06;
if(s==0x00)
{
count++;
}
と考えましたが、これだと黒い場所を通過している間、カウント値が上がり続けてしまいます。
センサの状態が前の状態か変化したときにだけ、カウントしたいのですが、
↓のコードにどのように追加すれば良いのか分かりません。
コード:
switch(Dir) //進行方向に応じて後退・前進・停止
{
case 0:
M1Rev(); //後退
M2Rev();
break;
case 1:
M1Feed(); //前進
M2Feed();
break;
case 2:
M1Stop(); //停止制御
M2Stop();
break;
default: break;
}