2022/07/30(SAT) | マイコン使ったウインカーリレーA |
---|---|
はい。ウインカーリレーやってます。
今日はプログラムがほぼ決まったので解説。 今回使っているマイコンは PIC12F675ってやつ 今回はAD変換を使う必要があるので それが内臓されている奴。 8ピンのマイコンです。 電源2入力4出力2 ということで、マイコンの足をフルに使います。 ピンアサインは↓こんな感じ こんなにフルに使うのって滅多にないね ざっくりとした回路図は↓こんな感じね あ、ハザードスイッチのプルアップ抵抗書くの忘れたw GP0の可変抵抗器は 点滅の速度調整に使います。 で、プログラム アセンブラね。 コメント打ってあるから解説はいらないかもですが ざっくりは下のほうに書きます 1〜14行目:コンフィグ設定とかほぼお決まり 18〜20行目:定数を宣言しています 22〜32行目:変数を宣言しています 35行目からプログラム開始。いきなりGOTOしてますけど 38〜71行目:ここは割り込み処理です タイマー割り込みでウインカーの点滅を表現してます 73行目からが初期化処理です 各レジスタの初期化をしています 特記事項は特にないかな? 入力出力の設定をやってたりします 125〜163行目:メイン処理です ・AD値を取得します ・ハザードボタンが押下されたか判定 ・ウインカー右?左?の判定 ・オンの時の処理(146行目〜) ・オフの時の処理(157行目〜) 165〜189行目:ハザードボタンの判定 プッシュ型のスイッチを想定しているので プログラム上でオン/オフをトグルしています 191〜220行目:点滅スタート処理 ウインカーやハザードがオンになった時にコールされます オンとしたときに光るところから ウインカーがスタートするようにしています 簡単にいうと 電球を光らせてタイマーをスタートさせています 222〜226行目:ちょっとしたウェイト処理 AD変換の待ち処理です 228〜235行目:AD値取得処理 可変抵抗器から値を拾います。 で、それを0〜255の数値に変換して それをウインカーのタイマーの点滅間隔に使ってます。 10msのタイマーを何回ループするかとしています なので、最速は10msで 最長は255×10ms=2550ms=2.55秒 となっています(たぶん) スペシャルモードの解説 ハザードスイッチを押したまま電源を入れると スペシャルモードとして立ち上がります ハザード時に、右→左→右→左→右→左→・・・ となります。 という、いらねー機能www あとは回路を実際に組むところですかね。 そこも小型化するのに課題がありそうですけど。 |