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

 

 

 

↓準備中です。

 

 

●ニキシー管時計作製

メインメニューへ●

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

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

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

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

 

2進数で09を表す。

 

 

 

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

 

10進数

2進数

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

 

 

 

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

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

 

059カウントアッププロジェクト 〜そのA〜(起動)

 

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

 

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

 

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

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

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

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

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

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

 

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

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

 

059カウントアッププロジェクト 〜そのD〜(1の位)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 これと同じ要領で、LED22桁目、LED33桁目、LED44桁目として設定します。

←2桁目・・・

    10進数の0145890で、23671です。

←3桁目・・・

    10進数の0123890で、45671です。

←4桁目・・・

    070で、891です。

control_1LED1LED4が橙色の線で結ばれました。

 

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

 

059カウントアッププロジェクト 〜そのE〜(10の位)

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

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

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

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

 ステートを、05まで作ります。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”とLED57を結びます。これは、前述した1の位の設定と同じなので割愛させていただきます。1桁目〜3桁目までで、4桁目はありません。

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

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

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

 

059カウントアッププロジェクト 〜そのF〜(Build

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

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

詳細設定は、

Supply Voltage5V

Sample RateFree Run

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

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

にします。

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

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

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

・・・

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

 

 

059カウントアッププロジェクト 〜そのG〜(PSoCに書き込み

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

 

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

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

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

 

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

 

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

 

 

 

↓準備中です。

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

 

●電子工作メニューへ●