8x8ドットマトリクスディスプレイの接続方法

このようなドットディスプレイが手元にあります。
dotmatirxdisplay-001
仕組みは単純で、縦横に対応するアノードカソードに電池をつなぎさえすれば、光ります。なかなか面白いです。

dotmatrixdisplay-002
ピン配です。
dotmatrixdisplay-003
単純ではあるもののいざ点灯させようとすると、これがなかなかむずかしく頭がこんがらがってしまいます。まあ慣れてないってのもありますが。
そこで、ROW/COL(行/桁)を指定すれば、接続ピンがわかるコマンドを作ってみます。

~$ cat -n dmdisplay.rb
     1	#!/usr/bin/ruby
     2	a=[22,19,16,13,3,6,9,12] #anode
     3	
     4	k1=[23,20,17,14,2,5,8,11] #cathode
     5	k2=[24,21,18,15,1,4,7,10] #cathode
     6	
     7	row=ARGV[0]
     8	col=ARGV[1]
     9	x=row.to_i() -1
    10	y=col.to_i() -1
    11	
    12	printf("(ROW=%s,COL=%s) = RED:%2d(A) - %2d(K)       GREEN %d(A) - %d(K)\n",
    13	 row,col,a[x],k1[y],a[x],k2[y])
    14	

使ってみます。(パスは通しておきます)

~$ dmdisplay.rb 1 1
(ROW=1,COL=1) = RED:22(A) - 23(K)       GREEN 22(A) - 24(K)
~$ dmdisplay.rb 8 4
(ROW=8,COL=4) = RED:12(A) - 14(K)       GREEN 12(A) - 15(K)
~$ 

banner表示をピンに変換してみましょう。

~$ banner A | perl -ne '$row++;$col=0;foreach(split //,$_){ $col++; printf "dmdisplay.rb %d %d\n",$row,$col if /#/}'
dmdisplay.rb 1 4
dmdisplay.rb 2 3
dmdisplay.rb 2 5
dmdisplay.rb 3 2
dmdisplay.rb 3 6
dmdisplay.rb 4 1
dmdisplay.rb 4 7
dmdisplay.rb 5 1
dmdisplay.rb 5 2
dmdisplay.rb 5 3
dmdisplay.rb 5 4
dmdisplay.rb 5 5
dmdisplay.rb 5 6
dmdisplay.rb 5 7
dmdisplay.rb 6 1
dmdisplay.rb 6 7
dmdisplay.rb 7 1
dmdisplay.rb 7 7
~$ 

この出力を、実行すると・・・、

~$ !! | bash
banner A | perl -ne '$row++;$col=0;foreach(split //,$_){ $col++; printf "dmdisplay.rb %d %d\n",$row,$col if /#/}' | bash
(ROW=1,COL=4) = RED:22(A) - 14(K)       GREEN 22(A) - 15(K)
(ROW=2,COL=3) = RED:19(A) - 17(K)       GREEN 19(A) - 18(K)
(ROW=2,COL=5) = RED:19(A) -  2(K)       GREEN 19(A) - 1(K)
(ROW=3,COL=2) = RED:16(A) - 20(K)       GREEN 16(A) - 21(K)
(ROW=3,COL=6) = RED:16(A) -  5(K)       GREEN 16(A) - 4(K)
(ROW=4,COL=1) = RED:13(A) - 23(K)       GREEN 13(A) - 24(K)
(ROW=4,COL=7) = RED:13(A) -  8(K)       GREEN 13(A) - 7(K)
(ROW=5,COL=1) = RED: 3(A) - 23(K)       GREEN 3(A) - 24(K)
(ROW=5,COL=2) = RED: 3(A) - 20(K)       GREEN 3(A) - 21(K)
(ROW=5,COL=3) = RED: 3(A) - 17(K)       GREEN 3(A) - 18(K)
(ROW=5,COL=4) = RED: 3(A) - 14(K)       GREEN 3(A) - 15(K)
(ROW=5,COL=5) = RED: 3(A) -  2(K)       GREEN 3(A) - 1(K)
(ROW=5,COL=6) = RED: 3(A) -  5(K)       GREEN 3(A) - 4(K)
(ROW=5,COL=7) = RED: 3(A) -  8(K)       GREEN 3(A) - 7(K)
(ROW=6,COL=1) = RED: 6(A) - 23(K)       GREEN 6(A) - 24(K)
(ROW=6,COL=7) = RED: 6(A) -  8(K)       GREEN 6(A) - 7(K)
(ROW=7,COL=1) = RED: 9(A) - 23(K)       GREEN 9(A) - 24(K)
(ROW=7,COL=7) = RED: 9(A) -  8(K)       GREEN 9(A) - 7(K)
~$ 

これで頭がショートすることはなくなりました。

コメント

  1. […] ← 8x8ドットマトリクスディスプレイの接続方法 […]

タイトルとURLをコピーしました