その他の部品として、Raspberry PI2のピンヘッダーを描いていきます。
ピンヘッダーは左側に配置しますが、座標ルールを合わせるため、get_board_xxyyを改造しました。
14行目〜が、ピンヘッダー用の座標決めのソースです。
7行目〜13行目までに$〜offsetとあるのは、ブレッドボードを横にずらすために入れています。
1 sub get_board_xxyy{
2 my($x,$y) = @_;
3 $x-=1;
4 $y-=1;
5 if($x < 4){
6 my $w = 20;
7 $xx = $x * $w + 15 + ($x >= 2)*285 + $xx_offset;
8 $y = 0 if($y >= 25);
9 $yy = $y * 20 + 35 + int($y /5) * 20 + $yy_offset;
10 }elsif($x < 20){
11 my $w = 19;
12 $xx = $x * $w + 10 + ($x >= 9)*32 + $xx_offset;
13 $yy = $y * 20 + 30 + $yy_offset;
14 }else{
15 my $w = 20;
16 $xx = ($x-20) * $w + 60;
17 $yy = $y * 20 + 60;
18 }
19 return ($xx,$yy);
20 }
ピンヘッダの描画は、put_pinheaderです。
考えるのが面倒になると、どんどんソースが荒れてきますね。廃墟のようなソースになると、リファクタリングするのが楽しくなります。
今は何も考えずに、ブログを書くのを楽するために、使えるようにするのが目標です。
1 sub put_pinheader{
2 my($x1,$y1,$x2,$y2) = @_;
3 my($xx1,$yy1,$xx2,$yy2) = get_board_xxyy(@_);
4
5 my($p_xx1,$p_yy1) = ($xx1 - 7, $yy - 7);
6 print qq#<rect x="$p_xx1" y="$p_yy1" width="40" height="400" stroke="bla
7
8 for($i=$x1;$i<=$x2;$i++){
9 for($j=$y1;$j<=$y2;$j++){
10 $p_xx = $p_xx1 + ($i-21)*20+1;
11 $p_yy = $p_yy1 + ($j-1)*20+1;
12 $c_xx = $p_xx + 9;
13 $c_yy = $p_yy + 9;
14 print qq#<rect x="$p_xx" y="$p_yy" width="18" height="18" stroke="white"
15 print qq#<circle cx="$c_xx" cy="$c_yy" r="3" fill="gold" />#;
16 }
17 }
18 }
今回は、サンプルコマンド(sample.sh)もコミットしました。
使ってみます。
~$ git clone https://github.com/takkete/bread.git ~$ cd bread ~$ . sample.sh



コメント