Raspberry PI 7セグLEDで数字を表示する

pi-7seg-all
アニメ『NO.6』(ナンバー・シックス)(2011)
最後まで視聴できるかは最初の数回にかかっているんでしょうけど、主人公がいまいち好きになれず断念。おそらくもっと見続ければ理解できたのでしょうけど。

今回は7セグの続きで、数字の0〜9を表示したいと思います。

LEDの点灯パターンは数字毎の配列で持ちます。
まずは、実際のポート操作を行わずに、printするだけのコマンドにしました。

~$ cat print_7seg.pl
$n[0]="17 0|18 1|27 1|22 1|23 1|24 1|25 1|4 0";
$n[1]="17 0|18 0|27 0|22 1|23 0|24 0|25 1|4 0";
$n[2]="17 1|18 0|27 1|22 1|23 1|24 1|25 0|4 0";
$n[3]="17 1|18 0|27 1|22 1|23 0|24 1|25 1|4 0";
$n[4]="17 1|18 1|27 0|22 1|23 0|24 0|25 1|4 0";
$n[5]="17 1|18 1|27 1|22 0|23 0|24 1|25 1|4 0";
$n[6]="17 1|18 1|27 1|22 0|23 1|24 1|25 1|4 0";
$n[7]="17 0|18 1|27 1|22 1|23 0|24 0|25 1|4 0";
$n[8]="17 1|18 1|27 1|22 1|23 1|24 1|25 1|4 0";
$n[9]="17 1|18 1|27 1|22 1|23 0|24 1|25 1|4 0";

sub disp_num{
	my @arr=split /\|/,$n[shift @_];
	@cmds=map { sprintf "gpio -g write %s\n",$_ } @arr;
	print " @cmds";
}

disp_num(shift);

数字の0を指定すると、このように表示されます。

~$ perl print_7seg.pl 0
 gpio -g write 17 0
 gpio -g write 18 1
 gpio -g write 27 1
 gpio -g write 22 1
 gpio -g write 23 1
 gpio -g write 24 1
 gpio -g write 25 1
 gpio -g write 4 0
~$ 

実際に出力してみましょう。
printの代わりに、systemを使うことで、gpioコマンドが発行できます。

~$ sed 's/print /system /' print_7seg.pl > out_7seg.pl
~$ perl out_7seg.pl 6

pi-7seg-no6-title

コメント

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