2016-06-20 18:26 | カテゴリ:PIC応用回路

最近製作しましたPICを使用してLEDの点滅やRCサーボの制御を行うプログラムですが、RCサーボの接続と動作に多少の制限があり、思うような動作が出来ない場合があるとのコメントをいただいていました。
原因は、サーボを制御する関数内で、現在のサーボの位置やサーボ動作を規定する動作ステップ値を記憶する変数を一組しか設定していなかったからなんですが、これをサーボの数だけ増やしてやれば、それぞれのサーボを自由に動作・停止させることが出来ます。
一方で、今回使用しているPIC 16F876は、内蔵のメモリー(RAM)にかなり制限があって、配列変数を多く取れません。
そこで、ポートAに動作指定用のSWを2個、LEDポートを11個(RA2-4)と(RB0-7)、じわり点滅のPWM用のLEDを1個(RC2)、そしてサーボを4個(RC4-RC7で専用)という仕様でプログラムを見直しました。

変更点は、新たにデータ保存用の配列を定義し、

newDefine.jpg

新たにサーボを接続するポートCをON/OFFできるように、ポートON、OFFの関数を修正、

newsv.jpg

new_on.jpg

また、配列の初期のセットアップデータもデモ用で変更しました。

initial.jpg

回路を組み上げて、テストしました。
LEDは、順次点滅、定期点滅、ランダム点滅をしつつ、RCサーボが、SWのON/OFFに合わせて、動作します。
SWを押すタイミングや、サーボの動作方向に制限はありません。
また、複数サーボの動作のために、MAINルーチンのdelay関数を20msecから5msecに変更しました。10msecでもかまいません。

動作状況は、こちらです。



最終プログラミングは、こちらです。

Prog101.txt

是非、使用されて感想など頂ければ幸いです。


【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(10)

管理者のみに表示する