複数のパターン処理対応も済み、スイッチ入力の処理に取り掛かっています。
スイッチ入力の骨組みが出来ました。
モード切替、ウインカー右、ウインカー左の入力の処理を作ればほぼ完成のところまできました。
スイッチ入力はチャタリングというものがあり、ONにしただけなのに接触不良当でON/OFFを繰り返す症状をいいます。
これがあるとPICマイコンは処理が早いのでその都度処理が走ってしまい、たとえばモード切替をしたつもりでも何回もボタンを押したことになり、正常に処理が出来ません。
短時間でのON/OFFは処理しないようにプログラムが必要です。
頭の中で一気に考えてコーディングしましたが、すんなり動きました。(良かった!)
週末には一度お披露目できるかも?
2008-02-28
2008-02-27
流れるウインカー基板 パターン処理
パターン処理も骨組みが出来ました。
複数パターンを考慮しスイッチ入力の処理をつければ全体的な骨組みが出来ます。
スイッチ入力が簡単なようで難しいのです、これはちょっと後回しにしています。
参考資料・・・
const ptntbl as byte[15] = ($00,$18,$3C,$7E,$FF,$E7,$C3,$81,$00,$00,$00,$00,$00,$00,$00)
const ptnctl as byte[15] = (1,2,3,4,5,6,7,0,0,0,0,0,0,0,0)
const ptntim as byte[15] = (2,1,0,0,0,0,1,2,0,0,0,0,0,0,0)
こんな感じでパターンの情報をもたせます。
ptntblの変数が実際のパターンを管理します。
上記の場合こんな感じで点灯します。
○○○○○○○○ $00 0番目
○○○●●○○○ $18 1番目
○○●●●●○○ $3C 2番目
○●●●●●●○ $7E 3番目
●●●●●●●● $FF 4番目
●●●○○●●● $E7 5番目
●●○○○○●● $C3 6番目
●○○○○○○● $81 7番目
以下繰り返し
データは16進でセットしています。
ptnctlが次のパターンを示しています。
1,2,3,4,5,6,7,0と順に7番目までセットすると次は0番目に戻りぐるぐる繰り返すように設定しています。
ptntimが時間(回数)です。設定された数値+1回セットします。
これを考慮して説明すると
○○○○○○○○ $00 0番目 2
○○○○○○○○ $00 0番目
○○○○○○○○ $00 0番目
○○○●●○○○ $18 1番目 1
○○○●●○○○ $18 1番目
○○●●●●○○ $3C 2番目 0
○●●●●●●○ $7E 3番目 0
●●●●●●●● $FF 4番目 0
●●●○○●●● $E7 5番目 0
●●○○○○●● $C3 6番目 1
●●○○○○●● $C3 6番目 1
●○○○○○○● $81 7番目 2
●○○○○○○● $81 7番目 2
●○○○○○○● $81 7番目 2
こんな感じになります。
メインの処理です、あくまでも参考です。
main:
init_rtn
while true
if counter > speed then ' if counter is speed, then
led = ptntbl[ptnstep]
inc(ptncnt)
if ptncnt>ptntim[ptnstep] then
ptnstep=ptnctl[ptnstep]
ptncnt=0
end if
counter = 0
end if
sw_chk
PORTB =led
wend
end.
複数パターンを考慮しスイッチ入力の処理をつければ全体的な骨組みが出来ます。
スイッチ入力が簡単なようで難しいのです、これはちょっと後回しにしています。
参考資料・・・
const ptntbl as byte[15] = ($00,$18,$3C,$7E,$FF,$E7,$C3,$81,$00,$00,$00,$00,$00,$00,$00)
const ptnctl as byte[15] = (1,2,3,4,5,6,7,0,0,0,0,0,0,0,0)
const ptntim as byte[15] = (2,1,0,0,0,0,1,2,0,0,0,0,0,0,0)
こんな感じでパターンの情報をもたせます。
ptntblの変数が実際のパターンを管理します。
上記の場合こんな感じで点灯します。
○○○○○○○○ $00 0番目
○○○●●○○○ $18 1番目
○○●●●●○○ $3C 2番目
○●●●●●●○ $7E 3番目
●●●●●●●● $FF 4番目
●●●○○●●● $E7 5番目
●●○○○○●● $C3 6番目
●○○○○○○● $81 7番目
以下繰り返し
データは16進でセットしています。
ptnctlが次のパターンを示しています。
1,2,3,4,5,6,7,0と順に7番目までセットすると次は0番目に戻りぐるぐる繰り返すように設定しています。
ptntimが時間(回数)です。設定された数値+1回セットします。
これを考慮して説明すると
○○○○○○○○ $00 0番目 2
○○○○○○○○ $00 0番目
○○○○○○○○ $00 0番目
○○○●●○○○ $18 1番目 1
○○○●●○○○ $18 1番目
○○●●●●○○ $3C 2番目 0
○●●●●●●○ $7E 3番目 0
●●●●●●●● $FF 4番目 0
●●●○○●●● $E7 5番目 0
●●○○○○●● $C3 6番目 1
●●○○○○●● $C3 6番目 1
●○○○○○○● $81 7番目 2
●○○○○○○● $81 7番目 2
●○○○○○○● $81 7番目 2
こんな感じになります。
メインの処理です、あくまでも参考です。
main:
init_rtn
while true
if counter > speed then ' if counter is speed, then
led = ptntbl[ptnstep]
inc(ptncnt)
if ptncnt>ptntim[ptnstep] then
ptnstep=ptnctl[ptnstep]
ptncnt=0
end if
counter = 0
end if
sw_chk
PORTB =led
wend
end.
2008-02-26
2008-02-16
流れるウインカー基板
流れるウインカー基板出来ました。
PICマイコンのプログラムはこれからです。
PICマイコンのプログラムはこれからです。
全部半田で基板のパターンを作ったのでちょっと大変でした。
動作確認用のLED基板も作成して準備完了です、プログラム作成頑張ります。
登録:
投稿 (Atom)