そこで、これを増やす方法を考えました。
端子を増やすにはエキスパンダを使う。
エキスパンダって白黒のかわゆい希少動物ではなく、Expandするヤツです。ふと目についたこれ。
タイトルは、「キャラクタLCDをシリアル接続するアダプタ」です。
キャラクタLCDは最低でも7ピン必要なのですが、マイコンで7本のピンが残っていないときシリアル接続するための基板です。LCD用ですが、中を見ると「PCF8574」が使われていてこれを調べると「汎用IOエキスパンダ」でした。つまり、汎用品を使ってLCD基板を作っています。
ならば、汎用エキスパンダにも使えるはずということで、試してみました。
IchigoBoyPocketにつないでいます。
4ピン部分をROMソケットにつなぎます。IchigoJamの配置とはSDAとSCKが逆なのでそのままでは刺せません。私は配線に変えてつなぎました。
16ピン側がLCDに行く線ですが、これのDB7~DB4,E,R/W,RSの7本が使えます。
ポイントは、
- READするポートは1をWRITEしておく事
- I2Cアドレスが2種類あること(#27、#3FでICの種類で変わります。)
- IchigoJamのROMソケットとは信号が逆順だった。
アドレスが2種類あるので注意が必要です。各々7アドレス追加でき8個を同時につなぐことができます。
単純にここを1バイトI2CWすれば書き込むことができるし、1バイトREADすれば読み出せます。1ビットごとではなく8ビット同時です。
まずは読み出しサンプルプログラムです。行60で#FFをOUTしておきます。
次は書き込みサンプルプログラムです。10 'IO Expander50 POKE#700,25560 R = I2CW(#3F,#700,1)100 for i = 0 to 255110 poke#700, i120 R = I2CR(#3f,#700,1)125 ?BIN$(PEEK(#700))130 NEXT140 GOTO 100
10 'IO Expander OUT
100 for i = 0 to 255
110 poke#700, i
120 R = I2CW(#3f,#700,1)
125 ?I
130 NEXT
140 GOTO 100ここまでは、簡単ですね。
手元のアダプタでは次のような対応でした。
Jam アダプタ
Bit7 DB7
Bit6 DB6
Bit5 DB5
Bit4 DB4
Bit3 なし。読むとゼロです。
Bit2 E
Bit1 R/W
Bit0 RS
注:読むときはOUT=1にすること。
注:アドレスは#27と#3Fがあるので動かないときは両方試すとよいかも。
これを使って電子工作してみましょう。
追加でスイッチをつないだり、モーターをつないだりできますね。電子工作するときに便利そうです。
0 件のコメント:
コメントを投稿