2014年12月7日日曜日

7セグメントLEDを使ってみよう!

ADCの記事が先なのは、十分わかっているのですが。
PSoCまつりで7セグメントLEDを使ったデモを持ってきたので
それの説明、と言うわけ。

さて、7セグメントLEDを通常のマイコンで使う場合
ダイナミック点灯と言う方法を使います。
ダイナミック点灯の簡単な説明をすると
マイコンの入出力ポートにLEDのカソードとアノードの両方を接続して
数字、もしくは文字のように表示させる方法。
ただし、制御がそれなりに面倒な部類で、
プログラムでは配列をつかって
セグメントのON,OFFを繰り返す形で表示させます。

PSoC5LPではどうなのかと言うと

配列云々を使ったりはしません!

では、どうするのかと言うと
LEDドライバーコンポーネットを使います。
「Display」のファイルの中のから「4 Digit 7-segment LED Driver」を選びます。
(これと近いコンポーネットがあると思うが、このタイプを使ってほしい。)



画面にドラックアンドドロップするとこんな形となります。



それでは、LEDドライバーの設定を開けてみましょう。


中の設定は、左側に「ナンバーオブセグメント」
「ナンバーオブコモン」と言う表示があって
右側に「タイミング」「ブライトネスコントロール」と言うのがあります。

「ナンバーオブ***」はセグメントの数と桁の数の設定で
アクティブLowとhigtは7セグメントがアノードコモンか、
カソードコモンなのかによって違います。

アノードコモンである場合はこのままで良いですが
カソードコモンである場合は2つとも逆にします。
また、トランジスタ等でドライブ回路を組む場合にも調整が要ります。

ブライトネスコントロールを使う場合では
タイミングの数値を下げる必要性がありますが
今回はカソードコモンの7セグを使って、
ブライトネスコントロールを使わないので、このまま。
「OK」をクリックして閉じましょう。

閉じたら、今度は配線をしましょう。
配線は少しヤヤコシイですが、カソードコモン4桁の場合を例にやってみます。
アノード側のピンをA~DPまでを抵抗をはさんで適当なピンにつなぎます。
抵抗はLEDに対して1mAになるように選びます。
(電源電圧-下がった電圧/0.001=抵抗値)
コモン側も同じように適当なピンにつなぎます。
この時に必ずつないだポート番号(ピン番号)と7セグの何番ピンを使ったか
のメモしてください。

繋げたらピンアサインの画面を開いて設定をします。
今回は「Name」の行を見ながら作業をしていきます。

NameにはそれぞれCom[0]Seg[0]と言うような事が書いてあります。
コレが重要な目印になってくれています。
図を見ていただきたいのですが、



7segAの所(11番め)につないだPSoC5LPのポート番号を
Nameの行がSeg[0]の所に設定をしてあげます。
7SegBの所(7番目)につないだPSoC5LPのポート番号を
Nameの行がSeg[1]の所に設定をしてあげます。
という形で7segAGseg[0]seg[7]に一致するように設定します。

コモン側の設定は4桁の左側が基準になるように設定をしていきます。
たとえば4桁の左側、一桁目のコモンの12番目につないだPSoC5LPのポート番号には
Nameの行がCom[0]の所に設定をしてあげます。

こう言う形だとちょっと面倒かもしれませんが
ポートごとでの設定と言うことも出来ます。今回は省略させていただきます。

設定が出来るとこんな感じ。



ここで一度、コンパイルをしましょう。
コンパイルが出来たら「main.c」を開いて

3行書きます。




LED_Driver_1_WriteStering7Seg()では「C」の文字がどうしても小文字で表記されるので
LED_Dreiver_1_Write7SegDigitHex()を使って16進数表記で「C」を表記しています。

もう一度コンパイルして書き込みましょう。
そうしたら7セグLEDに「PSoC」と表示されますね。
そうしたら成功(/・ω・)/

PSoC5LPではトランジスタ等が必要にはなりますが、16セグまで同じやり方で動きます。
16セグのLEDが手に入れば、表記の幅も広がって表現が豊かになりますね。

どうでしょう?arduinombedでは出来ない芸当です。
またカメラを通して見てみるとダイナミック点灯で起きるチラつきがありません。
CPUが最低限の事をしていませんから当然ですね。

~~~~ソース電流とシンク電流について~~~

今回、LEDをつなぐ際に
1mAになるように抵抗を選んでください」と書きました。
これはPSoC5LPに吸い込める電流値が「8mA」と決まっているためです。
吸い込める電流をシンク電流
出せる電流をソース電流
と言ってどのON,OFFするような回路にも出てきます。




PSoC5LPではシンク電流が8mA、ソース電流が4mA
決まっています。
SIOと言うデジタル専門のピンを使えばシンク電流を25mAまで拡張出来ます。

1 件のコメント:

  1. お世話様です、PSoC5LP(KIT-059)をやり始めましたが最適な書物、FANクラブも無く自身で駆使してTRYしていますが、今4個の7セグメントを全点灯させようと、ここの例に則って書き込んでおりますが、エラーが出て点灯などしません。1つは、Resource limit: Maximum number of IO exceeded (max=48, needed=84)というエラーメッセージ。ここで言うリソースとは何を意味してるのでしょうか?2つめはThe fitter aborted due to errors, please address all errors and rebuild.その全てのエラーが何を言っているのかさっぱり解らないのです。ご指導頂けると助かります。

    返信削除