You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。2018/7/7 .. おお七夕 .. には63万0656アクセスになっていました。久しぶりに更新しました。

2017年10月2日月曜日

PICで作ったBinary Clock

Crowd Funding に、2進数表示の時計があったので、PIC 16F1827と、フルカラーLED 7つ、および時計用の32.768kHzの水晶発振子。あとは、モード設定用のタクトスイッチ(赤、黄色、青)を使って作ってみました。

最初、実験用にdelay関数を使って無限ループでLEDが適当に点灯するプログラムを作り。
動作確認後、32.768kHzで0.5秒間隔で正確に割り込んで、時計変数を更新する仕様にしました。

PIC Kit3のプログラマと製作したBinary Clock

コンデジのLiIon電池と充電器パーツで電池駆動にしました。
コンデジのLiIon電池と充電器パーツで電池駆動にしました。

配線面 - 耐熱ラッピングワイヤをはんだ付け

配線面 - 耐熱ラッピングワイヤをはんだ付け


表示モードと時計モードのスペック
   
Easy, Auto1, Auto2, Pro1, Pro2のモードを作りました。

  1. Auto1モードでは、時=赤・分=緑・秒=青が0.5秒ずつ切り替わって順番に示されます。
  2.    Pro2モードでは、時=赤、分=緑、秒=青が加色混合され同時に表示されます。結果、上写真右下のような色になります。
  3. 7bitで2進で示すモードと、3bit, 4bitのBCD (2進化10進数)で示すモードとあります。BCDのほうが初心者向けでしょうが、それでも、時・分・秒を加色混合すると、読めません!!
 以下、Pro2モードの動画です。時・分・秒が加色混合されるので、多分、何時か.. すらもわからないと思います。Pro1として時・分だけの加色混合モードもあります。電源アダプタは余ったAUポイントで貰った、ガラケーのアダプタが5V出力だったので再利用しています。


以下Auto1モードの動画です。BCD(2進化10進数)表示モードです。
 5時45分頃というのがわかると思います。


セットアップモードと各種モードの説明

回路図: 3色LEDをダイナミック点灯をかけています。

ダイナミック点灯は2msで切り替えます。
  1. 初めPICのクロックを500kHzにしましたが、あまり最適化されていないプログラム(300行ぐらいでしょうか..) というのもあり、結構ちらつくので、8MHzにしたところ問題はなくなりました。
  2. PICはクロック発信回路を内蔵し、時計用水晶発振子を直付けできるので、回路は簡単です。PICのプログラマ PIC Kit3から5Vを供給して、プログラムをしつつ動かしていたのですが、時計割り込みがかかりませんでした。
    1. 割り込み動作なので、XIDE 付属のsimulator でも問題は不明
    2. クリスタルのつながるT1OSO, T1CKIは、それぞれPICのプログラム信号 ICSD (データ), ICSC (クロック)で、PIC Kit3の負荷につながるので、これをつけたままでは水晶発振子が発信していなかったのが原因でした。
    3. 水晶発振子には68pF (指定では33pFですが)でGNDに繋いでいます。PIC Kitの案内には、ICSD, ICSCにはキャパシタは繋がないこととありますが、この程度のキャパシタでは問題はないようです。なしでは、水晶発振子が動かないでしょう。。
  3. タクトスイッチはPICのWUPモードで内部pull upしたのですが、どうも誤動作するので、10k Ohmのpull upを3本追加しています。
  4. MAC OS-XではUSB接続のPIC Kit3が認識できないので、win10に移したのですが、こちらは、日本語のfolder/file名がコンパイル時に認識できなかったり、日本語文字コードが化ける(UTF-8のMacと、S-JISのwinで違うし。。)ので、ファイル・フォルダ名・コメント等は全部英語が無難に思います。
  5. プログラムはCで400行程度。PICのプログラムメモリ利用率は20%ぐらい。
  6. XC8ではPICのconfigurationは#pragmaで記述。(生成支援ツールもあります)
  7. そのほかのレジスタは、マクロとして定義されているので、入出力は極めて簡単。
  8. 12 bit命令の8bit PICは直接指定できるプログラム・メモリ空間が小さいのですが、Cで書けば、全く気にしないで書けます。
  9. その他、X IDEやXC8のCコンパイラは1行に、セミコロンで区切った複数文が書けない、intが16 bit、enumが使えない、など、若干違いがありそうです。






テストに使ったランダム点灯をデモモードとして残しました。Upを押しながら、Modeを押すと、出入りできます。デモモードでは、Mode, Up, Downのタクトスイッチそれぞれを押すと、赤・緑・青の点灯が抑制されたり、されなかったりを制御できます。

以下ビデオです。


プログラムに先立ち、I/Oピンの使い方、Configuration、変数名・関数名をexcelで仕様化しました。

が、例によって書いているうちに、変数名・関数名は変わりました。
作りながら考えるのがプログラミングの醍醐味でしょうね。

参考資料)
  1. 電子工作のための PIC16F1ファミリ活用ガイドブック 大型本 – 2013/4/11
    後閑 哲也 (著) 3,456円  http://amzn.to/2xJjKAZ  ー がわかりやすいです。
    ただ、コンパイラやツールが若干古く、以下関連リンクを参照する必要があります。
    タイマ割り込みの設定は、この本では、16F1937について説明があり、ところによっては16F1527だったりしますが、今回使った16F1827でも、ほとんど同じでした。



関連リンク)
  1. PIC 16F活用本作者のページ: http://www.picfun.com/ いろいろ情報あり。
  2. Configurationの説明あたり http://www.picfun.com/p818frame.html
  3.  XC8のconfigurationは自動生成して #pragma configをつかう http://www.picfun.com/bookmntU.html
  4. PIC 16F1827 と他のPICは若干違うので、そこは、PICの英語仕様書をダウンロードして確認のこと。