スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ラーメンタイマー改良 ~第1回~

どうもです。
無事に中学3年生になれたのですが・・・・最近やることがなくなって、しかも新クラスが萎え萎えで、どうしようもない状態です^^;

と言うことで、何か暇つぶしにと、以前作った「ラーメンタイマー」を改良しようと思いました。まあ、一応完成はしてるんですが、プログラムが最低レベルだったので^^;

とりあえず完成してるところは流用して、LEDFlashの所をなんとか消化することにしました。と言うことで今回もBASIC言語で書いていきます。回路は前回製作したやつと同じで、PICは13F675です。面倒くさいんで、今回もTMR0は使わない方針です。

とりあえず書いてみたんですが・・・・どうも上手くいきません。LEDフラッシャーは出来るのですが、そのエンドレスflashから抜け出せずに、3分たってもブザーが鳴らないのです。
If文で分岐も試してみましたが、やはりエンドレスflashから抜け出せませんでした。その後、試行錯誤してみたものの、やはり出来ませんでした。

まあ、暇なんで何か名案を閃いた時にでも改良を続けたいと思います。もし詳しい人がいれば、初心者の自分に教えていただきたいです。

とりあえず失敗に終わった途中経過のプログラムです。

program timer_v2

sub procedure flash

GPIO.0 = 1
Delay_ms(250)
GPIO.0 = 0
GPIO.1 = 1
Delay_ms(250)
GPIO.1 = 0
GPIO.2 = 1
Delay_ms(250)
GPIO.2 = 0
GPIO.4 = 1
Delay_ms(250)
GPIO.4 = 0

end sub


sub procedure Buzz(dim ln as word,dim cn as byte)

dim m as byte
dim n as word
m = 0

while m < cn

for n = 0 to ln
GPIO.5 = 1
Delay_us(300)
GPIO.5 = 0
Delay_us(300)
next n
Delay_ms(300)
m = m + 1

wend

end sub


dim count as byte


main:
CMCON = %00000111
TRISIO = %00000000
GPIO = %00000000

count = 0

If count < 180 then

flash

count = count + 1

else Buzz(200,15)

end If

end.
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメント

Secret

No title

私はVBの経験しかありませんが、mainが怪しい気がします。
If count < 180 then
flash
count = count + 1
else Buzz(200,15)
end If
end.

ということは、flashは1回実行されるが、Buzz(200,15)は一度も実行することなくmainが終了するのでは?
あと、3分待つ処理(ループ?)がどこにあるのか分かりませんでした。

No title

おお、コメントありがとうございます。
自分はまだ始めたばかりで、あまり分からないのですが、
flashは4つのLEDを250msずつナイトライダー的な感じでまわしてるので、約1秒です。このif文で Flashを1回実行したら変数countに+1して、また最初に戻る
変数countが180(つまり3分)に達したらブザーを鳴らす
と言うのを想像してるのですが・・・なかなかうまくいきません。

No title

ん・・・これを眺めてたら、なんとなく閃いたかも・・・

mainループの、if文の前に変数countを0にしてるではないか!!もしや、If文内でカウントした変数countを、ここで0に戻してる・・・?だからいつまでたってもエンドレスナイトライダーなのか!?!?
早速、count=0をcount変数宣言した直後に持って行ってやってみます。
FC2カウンター
プロフィール
名前:どじょりん
年齢:18歳
埼玉県所沢市在住
2014/4から新社会人
常に金欠

どじょりん

最新記事
カテゴリ
月別アーカイブ
最新コメント
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。