!完全に脱線 からの ブレッドボード図記述言語の作成
昨日Arduinoの記事を書こうと思い立って、{{link /arduino/ready /arduino/ready}}を書きかけましたが、次の記事を書くにあたり「ブレッドボードでの配線図」を簡単に書けるような環境が欲しくなりました。

Fritzing http://fritzing.org/home/
でつくってスクリーンショットを撮ればよいのですが、、、
なんとなく「魔法陣エンジン」で書けないかなとおもってやり始めました

http://inajob.no-ip.org:10080/mce2/data/tw:ina_ani:breadboard.html
できました。


で、ここのWikiは魔法陣記述言語で描いた図を埋め込む機能があるので、これでキーボードから手を離さずチュートリアルが書けるようになりました!
>> mce4
// ライブラリを作る
!breadboard =\()
 //ブレッドボードを描く
 scale(1.05)
  rect()
 fs("black")
  scale(0.05)
   shift(-10,0)
    grid(1,20)
     scale(0.2)
      rect()
   shift(-6,0)
    grid(5,20)
     scale(0.2)
      rect()
   shift(0,0)
    grid(5,20)
     scale(0.2)
      rect()
   shift(6,0)
    grid(5,20)
     scale(0.2)
      rect()
   shift(10,0)
    grid(1,20)
     scale(0.2)
      rect()
!atmega168p = \()
    lw(5)
     fs("black")
       scale(2,14)
        rect()
       ss("gray")
        grid(1,14)
         fig()
          xy(1,0)
          xy(2,0)
         fig()
          xy(-1,0)
          xy(-2,0)
       fs("white")
        rotate(1/2)
         scale(0.5)
          text("Atmega168p")

!vwire = \(col,x,y0,y1)
   lw(5)
     ss(col)
      fig(0)
       xy(x, y0)
       xy(x, y1)
!hwire = \(col,y,x0,x1)
   lw(5)
     ss(col)
      fig(0)
       xy(x0, y)
       xy(x1, y)
// ライブラリ ここまで
scale(1.8)
 breadboard()
 scale(1/200)
  shift(-100,-95)
   scale(10)
    hwire("red",10,0,8)
    vwire("black",5,11,19)
    hwire("black",11,6,8)
    hwire("black",19,6,14)
    hwire("black",19,18,20)
    // ICのチップ
    shift(13,10.5)
     atmega168p()
<<

!解説
なんと魔法陣言語にはサブルーチンを定義する命令があるので、ブレッドボードを簡単に書くライブラリを作ることができます

ブレッドボードを作る関数はこちら
>>
!breadboard =\()
 //ブレッドボードを描く
 scale(1.05)
  rect()
 fs("black")
  scale(0.05)
   shift(-10,0)
    grid(1,20)
     scale(0.2)
      rect()
   shift(-6,0)
    grid(5,20)
     scale(0.2)
      rect()
   shift(0,0)
    grid(5,20)
     scale(0.2)
      rect()
   shift(6,0)
    grid(5,20)
     scale(0.2)
      rect()
   shift(10,0)
    grid(1,20)
     scale(0.2)
      rect()
<<
atmega168pを作る関数はこちら
>>
!atmega168p = \()
    lw(5)
     fs("black")
       scale(2,14)
        rect()
       ss("gray")
        grid(1,14)
         fig()
          xy(1,0)
          xy(2,0)
         fig()
          xy(-1,0)
          xy(-2,0)
       fs("white")
        rotate(1/2)
         scale(0.5)
          text("Atmega168p")
<<
縦と横の配線はこんな感じで 色と位置を指定できるように
>>
!vwire = \(col,x,y0,y1)
   lw(5)
     ss(col)
      fig(0)
       xy(x, y0)
       xy(x, y1)
!hwire = \(col,y,x0,x1)
   lw(5)
     ss(col)
      fig(0)
       xy(x0, y)
       xy(x1, y)
<<

ここまで用意しておくとこうやって書くだけで上記のようなブレッドボードを描くことができます。
これ普通に便利じゃね?
>>
scale(1.8)
 breadboard()
 scale(1/200)
  shift(-100,-95)
   scale(10)
    hwire("red",10,0,8)
    vwire("black",5,11,19)
    hwire("black",11,6,8)
    hwire("black",19,6,14)
    hwire("black",19,18,20)
    // ICのチップ
    shift(13,10.5)
     atmega168p()
<<

ということで記事はまた今度書きます。
5643382
wiki
1403794893