ニキシー管時計作製〜マイコン編�A〜

 

 

 

↓準備中です。

 

 

●ニキシー管時計作製

メインメニューへ●

 さて次は、数を数える(スイッチを押すたびにカウントアップする)ようなものを作ってみます。

ここでは、時計として動かすことを考えるので、0〜59までカウントアップし、59の次はまた0に戻るという動作にします。

私たちが普段使っている数字は10進数(0〜9の10個の数字を数えると、1桁繰り上がる)ですが、ここでは2進数(0と1の2個の数字を数えると、1桁繰り上がる)で考えます。2進数の0と1が、電気信号があるか無いかで表すことができ、今回使う予定のニキシー管ドライバの“74141”の入力も2進数を使うので、非常に都合がいいのです。

今回も、前回と同様、“System Level Design”という方法で、“State Machine”と“Table Lookup”の組み合わせを使います。

 

●2進数で0〜9を表す。

 

 

 

10進数の0〜9を、2進数では左の表のように、4ビット(4桁)の0、1で表します。

 

10進数

2進数

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

 

 

 

●0〜59カウントアッププロジェクト 〜その�@〜(前準備)

 今回も、「PSoCマイコン・スタートアップ」という参考書に付属の基板をユニバーサル基板に載せ、LEDとタクトスイッチを実装した基板を使いました。

 

●0〜59カウントアッププロジェクト 〜その�A〜(起動)

 

 前回の、“先ずは試し、簡単なプロジェクト(タクトスイッチを押すたびに2個のLEDを交互に点灯させる)”と同様、“System Level Design”で組んでいきます。

 

(“System Level Design”の組み方の詳細は、こちらを参考にして下さい。)(参考になるかわかりませんが・・・(^^;)ゞ)

 

●0〜59カウントアッププロジェクト 〜その�B〜(デバイスの配置)

 起動したら先ず、入出力デバイスを選んで配置をします。

入力デバイスはタクトスイッチ(プッシュスイッチ)が1個、出力デバイスはLEDが7個です。

  タクトスイッチは、「Inputs」カタログの、(tactile \ Button \ Normally Open \ Internal Pulldown N_O)を選択します。

 LEDは、「Outputs」カタログの、(Display \ LED \ Single Color \ On/Off)を選択します。

←左の図は、入出力デバイスを配置したところです。

 

●0〜59カウントアッププロジェクト 〜その�C〜(数字の表し方)

 さて、先ほど、出力デバイスのLEDを7個配置しました。このLED7個を使って、0〜59を2進数で表します。LED1個が1ビットと考え、7個の内4個で1の位の0〜9を表し、あとの3個で10の位の0〜5を表します。2進数で4ビット目を使うのは10進数の8からなので、今回5までしか使わない10の位では、3個(3ビット)あれば表すことができます。

 

●0〜59カウントアッププロジェクト 〜その�D〜(1の位)

 まずは、1の位から作ります。

使うのは、ステートマシンとテーブルルックアップの組み合わせです。

 まずは、ステートマシンからです。

 ステートマシンを選択し、名前を“control_1”とします。 “0”から“9”までのステートを作ります。ただし、ひとつの数字に対し、タクトスイッチが“ON”になった時に移り変わるステートと、“OFF”になった時に移り変わるステートのふたつを作ります、例えば、“on_1”、“off_1”といった感じで、合計、20個のステートを作ります。(これがけっこうめんどい。。)

 タクトスイッチがON、OFFするたびに、ステートが遷移するように設定します。例えば、“off_0”ステートから“on_1”ステートに遷移するには、“sw_1== sw_1_On”とし、sw_1がONするとステート“on_1”に遷移するというように条件付けをします。

次の、ステート“on_1”からステート“off_1”に遷移するには、条件として“sw_1== sw_1_Off”とします。

 遷移の条件付けができたステート間は、このように矢印で結ばれます。

つまりは、タクトスイッチ“sw_1”がON状態になると、“on_○”スレートに遷移し、OFF状態になると、“off_○”スレートに遷移するように条件付けをします。

 全てのステートが結ばれました。

 “OK”をクリックすると、sw_1とcontrol_1が橙色の線で結ばれます。

これで、ステートマシンの設定は完了です。

 続いて、テーブルルックアップで、ステートマシンとLEDの関連付けをします。

 さて、7個配置したLEDは、前述したように、4個を使って1の位の0〜9を表し、3個を使って0〜5を表すように使います。まず、LED1を使って、1の位を表す4桁の、1桁目(“2進数で0〜9を表す。”で示した表の、2進数のいちばん右の桁)を表します。

 “2進数で0〜9を表す。”の表で分かるように、2進数の1桁目は10進数の偶数が0、奇数が1になっています。なので、ステートマシンで作った“control_1”のステートで、偶数のステートの時は“0”(LEDがOFF)、奇数のステートの時は“1”(LEDがON)とします。

 “LED_1”で、“Table Lookup”を選びます。

 “Select Input(s)”で“control_1_state”を選びます。

 ステートマシンで作ったステートと、“OFF”と“ON”の欄が表示されるので、ステートをONとOFFに振り分けていきます。ステートは、“on_1”、“off_1”といった感じにひとつの数字につき、ふたつ作っているので、“on_1”、“off_1”はON、“on_2”、“off_2”はOFFといったように、計20個のステートを振り分けます。

 全て振り分けたら“OK”をクリックし、LED1が1の位として設定完了です。

 これと同じ要領で、LED2を2桁目、LED3を3桁目、LED4を4桁目として設定します。

←2桁目・・・

    10進数の0、1、4、5、8、9が0で、2、3、6、7が1です。

←3桁目・・・

    10進数の0、1、2、3と8、9が0で、4、5、6、7が1です。

←4桁目・・・

    0〜7が0で、8、9が1です。

control_1とLED1〜LED4が橙色の線で結ばれました。

 

これで、1の位の設定が終わりました。

 

●0〜59カウントアッププロジェクト 〜その�E〜(10の位)

 次は、10の位の設定をします。基本的に、1の位と同じです。

 1の位と同じように、ステートマシンとテーブルルックアップの組み合わせを使います。

まずは、ステートマシンです。

 ステートマシンを選択し、名前を“control_2”とします。

 ステートを、0〜5まで作ります。10の位は5までしか表さないので、ステートも5までです。

“control_1”と同じように、“on_○”と“off_○”を作ります。

 “control_2”の設定です。

 “control_2”は、“control_1”がステートを1周すると、次の数字のステートに移動するようにします。

 “off_○”から“on_○”に移動する条件として、“control_1_state==control_1_state__on_0”とします。つまり、“control_1”のステートが、“on_0”になれば移動するという条件です。次に“on_○”から“off_○”に移動する条件は、“control_1_state==control_1_state__on_5”としています。“control_1”のステートが、“on_5”になれば、移動するという条件にしていますが、 “control_1”の“on_0”ステートから1周してまた“on_0”になるまでに“control_2”のステートが“off_○”に移動すればいいので、“on_5”のステートにこだわらず、“on_0”ステート以外ならどのステートでもいいです。

 全てのステート間を設定して、OKをクリックすれば、“control_1”と“control_2”が橙色の線で結ばれます。

ステートマシンの設定完了です。

 次は、テーブルルックアップで“control_2”とLED5〜7を結びます。これは、前述した1の位の設定と同じなので割愛させていただきます。1桁目〜3桁目までで、4桁目はありません。

←テーブルルックアップの設定が出来た!の図です。

 これで、デザイン作業は完了です。

 次は、ビルドで、プログラムを構築させ、実際にマイコンに書き込みます。

 

●0〜59カウントアッププロジェクト 〜その�F〜(Build)

 さて、ビルド作業です。これは前プロジェクトの、“まずは試し〜簡単なプロジェクト〜”でも書いているので、詳細は割愛させていただきます。

 使うマイコンについての設定ですが、「PSoCマイコン・スタートアップ」という参考書に付属の基板を使うので、この基板に載っている“CY8C21434”を選びます。

詳細設定は、

Supply Voltage:5V

Sample Rate:Free Run

Flash Interface:デフォルトのままEnable

Reserved ROM Size:デフォルトのまま2

にします。

 次は、ピン配置です。PSoC Designerが勝手に空いているピンに各パーツを割り振ってくれますが、“Unassign”をクリックすると、割り振られていたパーツがリセットされ、右上の表に移動するので、手動で割り振り直す場合は便利です。

 手動で割り振りをし直しました。

 “next”をクリックすると、ビルドが始まります。

・・・

・・・暫く待っていると、“0_error(s)”と出て、ビルドが終わります。

 

 

●0〜59カウントアッププロジェクト 〜その�G〜(PSoCに書き込み)

 これは、“まずは試し〜簡単なプロジェクト〜”と全く同じなので、割愛させていただきます。

 

●0〜59カウントアッププロジェクト 〜その�H〜(実際に動かしてみる)

 “まずは試し〜簡単なプロジェクト〜”の時と同様に、PCに挿しているMini Progを介して電源を供給し、動かしてみた図が、こんな感じです。

 黄色く光る7個のLEDで0から59を2進数で表し、基板手前、指の下のタクトスイッチを押すと、ひとつずつカウントアップしていきます。(59までいくと、0に戻ってまた数えます)

 

以上で、“0〜59カウントアッププロジェクト”は終わりです。次は、実際に作ったニキシー管時計に入れたプログラムを紹介します。

 

(今暫くお待ちください)

 

 

 

↓準備中です。

●ニキシー管時計作製 メインメニューへ●

 

●電子工作メニューへ●