![]()
今回はPSoC Expressを使ってMiniEval1上に用意された4つのLEDを順番に光らせる。
![]()
まず画面左下の「INPUT」をクリックして「Input Driver Catalog」の「Timing」から「Interval Generator」を追加する。
![]()
さらに画面左下の「OUTPUT」をクリックして「Output Driver Catalog」の「LED」から「On/Off」を追加する。
![]()
これでインターバルジェネレーターを示す「Input1」とLEDを示す「Output1」のアイコンが追加された。
![]()
今回はLEDを4つ制御するので、同様の操作でLEDを追加して「Output1」~「Output4」まで用意する。
ナイトライダー風にLEDを左右順番に点滅させる条件の設定は若干複雑だ。その設定を画面左下の「VALUATOR」から行う。
![]()
「VALUATOR」を開くと方式の選択画面が開く。ここから「StateMachine」(ステート・マシン)を選択する。PSoC Expressでナイトライダー風に光らせる方法はいくつかあるが、今回はこのステートマシンによる状態遷移をりようする。
![]()
「StateMachine」の設定ウインドウが開いた。ここで「Add State」をクリックする。
![]()
すると状態を入力する画面が開く。ここで名前を「LED1」として「OK」ボタンで追加する。
![]()
これで「StateMachine」ウインドウに「LED1」が追加された。
![]()
同様に「LED20」、「LED30」...と画面のように5つ追加して合計6つの状態を作る。LEDは4つだが、左から右に点滅する状態と右から左に点滅する状態とを区別するために6つ用意した。
さらに設定するため「LED1」をダブルクリックする。
![]()
「LED1」をダブルクリックして現れたウインドウで「Add」ボタンを押す。
![]()
すると状態遷移を設定するための画面が開く。ここで名前を「to2」(LED2へ向かうの意味にした)、「Expressioon」に「Input1__Triggered」を入力する。「Expressioon」入力時は画面左上に表示される「Expression Assistant」ウインドウから選択するとスペルミスの可能性を減らせる。
![]()
次にどこからどこへ状態遷移させるかを設定する。ここでは「LED1」から「LED20」とする。
![]()
同様に「LED20」は「LED30」へ...とぐるぐるまわるように状態遷移を5回設定してこの画面のように矢印が引かれるようにする。
![]()
インターバルジェネレーター「Input1」からステートマシン「Valuator1」へオレンジ色の線が引かれた。
![]()
ステートマシンでは(状態名は「LED1」のようにしたが実際の)LEDに対する設定は行わなかった。次にステートマシンの状態を実際のLEDに関連付ける。「Output1」を右クリックして現れたメニューから「Transfer Function」を選択する。
![]()
入力の選択欄では「Valuator1 state」を選択する。
![]()
ルックアップ・テーブルの設定画面が開いた。1つ目のLEDを示す「Output1」に対する設定なので、ステートマシンの状態(Valuator1_state)が「LED1」のときに「ON」、それ以外のときに「OFF」になるようにドラッグ・アンド・ドロップで設定する。これで「Output1」に対する設定は終わりだ。
![]()
同様に「Output2」も右クリックして「Transfer Function」から設定する。この場合「LED20」と「LED21」が「ON」になるようにする。
![]()
「Output3」では「LED30」と「LED31」を「ON」にする。
![]()
これで「Valuator1」と各LEDがオレンジ色の線で結ばれた。今回は若干複雑なので実際にPSoCへ書き込む前に「Simulation」で動作を確認する。
![]()
きちんと設定されていれば「Input1」の「Triggered」と「Not_Triggered」を順番にクリックするとOutput1の状態がONやOFFに順番に変わる。
![]()
シミュレーションで動作を確認したらビルドする。今回は「CY8C29466」を用い、「Sample Rate」を「8Hz」に設定した。
![]()
MiniEvalの基板にはP20~P23にLEDが用意されている。「Output1」~「Output4」がこれらのポートにつながるようにピンあサインを調整する。
![]()
ビルドが終わったらPSoC ProgrammerでPSoCへ書き込み実際に動作確認する。
これで4つのLEDがナイトライダー風に左右に順番に光った。
このように(設定が面倒でソースコードを書いた方が早いという気もするが、)ステートマシンなどのValuatorを使うとかなり複雑な動作まで実装できる。







