FM音源 YM2413で、電子音や音楽を鳴らすにあたり
制御にArduino nanoの出力ピンを12本も使うため、足らなくなりそう・・・と思っていました。
よし、制御する信号線を、まとめよう。
今回の目標:
・I/Oエキスパンダーで、制御線をまとめるテスト (とりあえずLED×10個を制御してみる)
・デバッグができるように、ロジックアナライザで制御信号を確認してみる
(※相当にわかりづらい内容なので、興味のない方は読み飛ばしてください・・・)
I/Oエキスパンダー MCP23017。秋月電子で110円。
amanoya3さんのブログで知り、購入。使い方も参考にさせて頂きました。
「Seeeduino XIAOのパラレル出力を増やすためにIOエキスパンダを使ってみた P.T.A.55」
どんな部品か例えるならば。
最大16本の手旗信号の上げ下げをタコ2匹が全部の脚でやっていたのを、
「左から下上上下下上上下・・・」みたいにロボットに一括指示できるようになり
結果、制御線(マイコンの制御ピン占有)が大幅に減らせます。
最終的に、YM2413の制御線12本を、I2Cの2本にまとめるよう目指します。が、
今回は練習で、LED10個の点灯/消灯を制御してみます。
ロジックアナライザ。AliExpressで送料込み519円。
デジタル信号の高低を、8チャンネル同時に記録する計測器です。
数ヶ月前に購入したまま、宿題として積んでいました。
初めて使います。
本来は万単位?の高価な装置で、500円で買える物ではないはずですが、
中国のナゾの技術革新により生まれたようです。
結論からいうと、興味ある人は買っていいと思います。保証はありませんが500円で便利になるならダメモトで。
Amazonでは1000~1500円で売っているようです。
細かいことは省略して。
I/OエキスパンダーにLEDを接続し、I2Cで適当な数「3」「66」(16進数)を送信してみます。
3は2進数で「0000 0011」
66は2進数で「0110 0110」
わかりにくいですが、2進数の「1」の桁に対応するLEDが点灯しました。制御できています。
66に当たるLED8本について、ロジックアナライザで電圧の高低を見てみました。
LEDが点灯していればHIGH、消灯していればLOWになっていることが分かります。
I2Cの信号線2本(SDA,SCL)について、ロジックアナライザで制御信号を見てみました。
プロトコルデコーダ機能を使うと、信号が自動解析されて、逆順ですが「3」「66」が
流れていることが分かります。
ロジックアナライザのアプリはPulseViewというフリーソフトで、よく出来ています。
操作もわかりやすいと思いました。もっと早く使えばよかった。
今日はここまでにします。
つづく。