6.リアルに砲身上下するプログラム
砲身上下 PICを使ってどうしてもやってみたかったのが砲身上下!
砲身上下は、ギミックとしてはわりと単純で、小型のサーボを使って上下させれば好いんだけど、その動きはどうも今1つ....
スティックの動きで、砲身が早く動きすぎたり、走行途中に動いたり...
理想は、ギア比の大きいギアボックスで、一定速度でゆっくり上下させるのが好いんだろうけど、1/35だとスペースの関係で、なかなか難しい。

そこで、今回はPICを使って、砲身上下サーボを一定速度でゆっくり動かして、リアルに上下させてみよう!


上下スティックの動き
3chのスティックで砲身上下させますが、スティックが1番上と下のときだけ、砲身上下のサーボが動きます。
それ以外の時は、スティックの位置に関係無く、サーボは止まったままです。

砲身上下サーボは、スティックが上(180以上)の時1ずつ上に動き、スティックが下(120以下)の時は1ずつ下に動きます。(一定速度で動く!)
スティックを中間に戻すと、サーボはその位置(最後に動かしていた位置をキープ)で停止します。


プログラミング開始!
  1. PICのRA2・RB2のピンを入力と出力に設定する。
  2. 砲身上下サーボの位置を記憶する変数POUT3を中間の150にする。
  3. ループ開始
  4. 3chの信号を取得(PIN3)
  5. PIN3が180以上なら、POUT3に1を足す。(但し、すでに200以上の時は足さない)
  6. PIN3が120以下なら、POUT3から1引く。(但し、すでに100以下の時は引かない)
  7. POUT3の値をサーボに出力
  8. ループへ戻る。
実際に作ったプログラムはこれ→「savo4a.asm

2アンプコントロールプログラムに組み込み 砲身上下単体で動かしても仕方ないので、前回作った2アンプコントロールプログラムに組み込んで見ました。

実際に作ったプログラムはこれ→「savo4b.asm


実際に動かしてみると.. まだ、ちょっと上下のスピードが早いような気がします...(^^ゞ

これ以上遅くしようとすると、0.5ずつ動かす....って言うのは難しいので(笑)、動かすタイミングを2回に1度とか、3回に1度というように、待ち時間をもうけよう!


上下スピードの補正 あらかじめ、待ち時間(0-5くらい)を設定しておいて...例えば、待ち時間「3」の時は、3回に1度のタイミングで1ずつ動きます。

実際に作ったプログラムはこれ→「savo4c.asm



戻る

更新日2000.7.20