フォト
2025年4月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

« aitendo I2CマトリックスキットをArduino動かしてみました | トップページ | Aliexpressで注文していたアナログジョイスティックが到着 »

2016年1月23日 (土)

IchigoJamでaitendoのI2Cマトリックスキットを動かしてみました

IchigoJamでaitendoの「I2Cマトリックスキット K-8X8I2C1388」を動かしてみました。

IchigoJam ファームウェアの1.2系のβ版の動作確認を兼ねて制御してみました。
(1.2系のβ版は フェイスブックのIcigojam-FANグループにて公開されています)
1,2系では文字列操作機能が追加されました。

参考情報
  福野泰介の一日一創 - 「文字列対応の IchigoJam ver 1.2β4 でジャンケンゲーム改良」

接続は次のような感じです。
4線接続(VCC、GND、SCL、SDA)で制御します。

Dscn4717

動いている様子

プログラムソース
10 CLV
110 POKE #700,#21,#81,#E1,#00
120 FOR M=#700 TO #702
130 R=I2CW(#70,M,1,#700,0)
140 NEXT
150 S="Hello,Ichigojam World!"
160 L=LEN(S)
500 FOR J=0 TO L-1
510 A=PEEK(S+J)*8
520 FOR C=0 TO 5
530 FOR D=0 TO 7
540 [D]=[D]<<1|PEEK(A+D)>>(7-C)
560 NEXT
570 R=I2CW(#70,#703,1,#800,16)
580 WAIT 2
590 NEXT
600 NEXT
610 GOTO 500

プログラムは意外と短いです。
文字列を扱えるようになったので、デバイスへのデータ渡しが簡単に実現出来るように
なりました。

プログラム的には、
10行が変数領域の初期化
110~140行がデバイスの初期化
150行でスクロール表示する文字列を指定しています。Sにその先頭アドレスが入ります。
160行で文字数の取得
500~610行がスクロール表示を行っています。
[0]~[7]をデバイスに送信するためのデータ領域と利用してます。

500~610行がスクロール表示部において
500行は文字列数分のループ
510行で"Hello,Ichigojam World!" の先頭からJ番目の文字コードを取得し、更に
8倍(1文字につきフォントデータは8バイト)してフォントデータ格納アドレスを取得します。
フォントデータは仮想アドレス#000から格納されています。下記が本来の計算式です。
A=PEEK(S+J)*8+#000

520行は1文字の左スクロール5ドット分のループ(英数字は横幅5ドット)
530行は縦8ドット分の処理のためのループ

540行は表示するデータの加工処理です。直前のデータを左に1ドットスクロールした後、
PEEK(A+D)にてフォントデータを取得してそのデータを右にシフトした値との和を[D]に
代入しています。

570行でデバイスでの表示データ16バイトを送信しています。
表示パターンデータ[0]~[7]の16バイトはアドレス#800に格納されています。
I2CW(#70,#703,1,#800,16) のお尻から2つのパラメタがそれを意味します。
前半の#70,#703,1はデバイス指定と表示のための命令ですが詳細は省略します。

arduinoなんかよりも、短いプログラムで簡単に制御できました。
コンパイルや書き込みも不要なので、確認も楽ちんです。



« aitendo I2CマトリックスキットをArduino動かしてみました | トップページ | Aliexpressで注文していたアナログジョイスティックが到着 »

IchigoJam」カテゴリの記事

表示器制御関連」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: IchigoJamでaitendoのI2Cマトリックスキットを動かしてみました:

« aitendo I2CマトリックスキットをArduino動かしてみました | トップページ | Aliexpressで注文していたアナログジョイスティックが到着 »