その他の部品として、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
コメント