アプリ版:「スタンプのみでお礼する」機能のリリースについて

PICでLED制御をしたいのですが、プログラムがわからない・・・
そこで、解る方がいたら、教えてください。

配線図・タイムチャートはhttp://blogs.yahoo.co.jp/sakura1014a/8480258.html
(配線図も間違えているようでしたら、教えてください^^;)

電源を入れて、スイッチを押したら、パターン1~6までを順番に進み6→1に戻る、の繰り返し。
スイッチを切ったら終了

電源:5V PIC:16F84A 言語:C言語 LED:3.2V/20mA

目的:LEDの光が流れているように見せたい。
   基盤~LEDまでの配線を隠したい為、配線は極力少なくしたい。
   コントローラーを狭い場所に隠したいので、コンパクトにしたい。
   (シーケンサー等はNG)

下手な説明で申し訳ありません、解らない事は聞いてください。
(こんな質問してる時点で無理なんでしょうか?)

解る方、お返事お願いいたします。

A 回答 (1件)

誰も返答がないようなのでちょっとだけアドバイスを。


はっきり言って、質問がほとんど丸投げで「分からないことを答える」の域を超えているので、返答は難しいと思います。

とにかく、このような質問をしているレベルでは、いきなり目的のプログラムを組むのは無謀だと思います。
「ブレッドボード」を使えば、ハンダ付け不要で回路を自由に組むことができますから、
まずは既存の解説そのままの回路を組んでPICのプログラミングに慣れてから、
改めて目的の点灯プログラム作成に取り組んだ方がいいと思います。

その上で、分からないところが出てきたら質問してください。

というだけだとアレなので、ついでに、3×2のマトリックス点灯の場合について、簡単な解説。
ダイナミック点灯させていますので、LEDの明るさは点灯時間でコントロールできます。
以下、説明が分かりやすいようにということで5ms単位にしていますが、この数字自体にはあまり意味がありません。


1. 下記を16回繰り返す(パターン1を約0.5秒点灯)
   1-01. 1番をL、2版をHに  (ABCで(1)(2)(3)の点灯を制御できるようになる)
   1-02. AをH、BをH、CをHに。 (1)点灯 (2)点灯 (3)点灯
   1-03. 5m秒待つ
   1-04. AをL、BをH、CをHに。 (1)消灯 (2)点灯 (3)点灯
   1-05. 5m秒待つ
   1-06. AをL、BをL、CをHに。 (1)消灯 (2)消灯 (3)点灯
   1-07. 5m秒待つ
   1-08. 1番をH、2番をLに  (ABCで(4)(5)(6)の点灯を制御できるようになる)
   1-09. AをL、BをL、CをLに。 (4)消灯 (5)消灯 (6)消灯
   1-10. 5m秒待つ
   1-11. AをL、BをL、CをLに。 (4)消灯 (5)消灯 (6)消灯
   1-12. 5m秒待つ
   1-13. AをL、BをL、CをLに。 (4)消灯 (5)消灯 (6)消灯
   1-14. 5m秒待つ
   (以上で480m秒のうち、(1)は80m秒、(2)は160m秒、(3)は240m秒点灯している。)

2. 下記を16回繰り返す(パターン2を約0.5秒点灯)
   1-01. 1番をL、2版をHに  (ABCで(1)(2)(3)の点灯を制御できるようになる)
   1-02. AをL、BをH、CをHに。 (1)消灯 (2)点灯 (3)点灯
   1-03. 5m秒待つ
   1-04. AをL、BをL、CをHに。 (1)消灯 (2)消灯 (3)点灯
   1-05. 5m秒待つ
   1-06. AをL、BをL、CをLに。 (1)消灯 (2)消灯 (3)消灯
   1-07. 5m秒待つ
   1-08. 1番をH、2番をLに  (ABCで(4)(5)(6)の点灯を制御できるようになる)
   1-09. AをH、BをL、CをLに。 (4)点灯 (5)消灯 (6)消灯
   1-10. 5m秒待つ
   1-11. AをH、BをL、CをLに。 (4)点灯 (5)消灯 (6)消灯
   1-12. 5m秒待つ
   1-13. AをH、BをL、CをLに。 (4)点灯 (5)消灯 (6)消灯
   1-14. 5m秒待つ
   (以上で480m秒のうち、(2)は80m秒、(3)は160m秒、(4)は240m秒点灯している。)

3~5略

6. 下記を16回繰り返す(パターン6を約0.5秒点灯)
   1-01. 1番をL、2版をHに  (ABCで(1)(2)(3)の点灯を制御できるようになる)
   1-02. AをH、BをH、CをLに。 (1)点灯 (2)点灯 (3)消灯
   1-03. 5m秒待つ
   1-04. AをH、BをH、CをLに。 (1)点灯 (2)点灯 (3)消灯
   1-05. 5m秒待つ
   1-06. AをL、BをH、CをLに。 (1)消灯 (2)点灯 (3)消灯
   1-07. 5m秒待つ
   1-08. 1番をH、2番をLに  (ABCで(4)(5)(6)の点灯を制御できるようになる)
   1-09. AをL、BをL、CをHに。 (4)消灯 (5)消灯 (6)点灯
   1-10. 5m秒待つ
   1-11. AをL、BをL、CをLに。 (4)消灯 (5)消灯 (6)消灯
   1-12. 5m秒待つ
   1-13. AをL、BをL、CをLに。 (4)消灯 (5)消灯 (6)消灯
   1-14. 5m秒待つ
   (以上で480m秒のうち、(6)は80m秒、(1)は160m秒、(2)は240m秒点灯している。)

7. 1に戻る

スイッチがONの時だけこの手順の動作をさせるように、といったプログラムにすればOKです。
(3本だけで6LEDを制御する方は、ピンをハイインピーダンスにする処理が入るので、さらに複雑になります。
出来ることなら、妥協して7本(出力6+共通1)で6LEDを制御するようにした方がプログラムが格段に簡単になります。)

あと、使用CPUに PIC16F84を出してますが、それはやめておいた方がいいです。
初期の定番PICでしたが、今となっては時代遅れですので、PIC16F88 あたりを使う方が、安いし高機能です。
http://homepage3.nifty.com/mitt/pic/pic88_2.html
http://1st.geocities.jp/taketea_2007/elekijack/k …
(例えば、PIC16F88など、最近のPICはクロック発信器を内蔵しているので、セラロックの外付けが不要になります。)
    • good
    • 0
この回答へのお礼

お返事ありがとうございます、大変参考になりました

言われた通り、まずはPICになれて行こうと思います。
(最初は、配線7本からやってみようと思います)

疑問に思うことが、これからもあると思うので、
その時は、まともな質問が、できるようがんばります。

お礼日時:2009/01/26 10:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!