このようなドットディスプレイが手元にあります。
仕組みは単純で、縦横に対応するアノードカソードに電池をつなぎさえすれば、光ります。なかなか面白いです。
ピン配です。
単純ではあるもののいざ点灯させようとすると、これがなかなかむずかしく頭がこんがらがってしまいます。まあ慣れてないってのもありますが。
そこで、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) ~$
これで頭がショートすることはなくなりました。
コメント
[…] ← 8x8ドットマトリクスディスプレイの接続方法 […]