// fork from System:シンプル
addDescription("h1","ブレッドボード回路図")
addDescription("","案外便利そうだ これ")

// ライブラリを作る
!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 = \(x,y)
  !label = \(x,y,v)
    shift(x,y)
     lw(100)
      scale(0.3)
       text(v)
  shift(x,y)
    lw(4)
     shift(2,6.5)
      fs("black")
        ss("gray")
         grid(1,14)
          fig()
           xy(1,0)
           xy(2,0)
          fig()
           xy(-1,0)
           xy(-2,0)
        scale(2,14)
         rect()
        fs("gray")
         shift(0,-6.9)
          ss("transparent")
           scale(0.5)
            rect()
        fs("white")
         rotate(1/2)
          scale(0.5)
           text("Atmega168p")
        fs("black")
         shift(-0.2,-6.75)
          label(-2,0,"RESET")
          label(-2,1,"RXD")
          label(-2,2,"TXD")
          label(-2,6,"VCC")
          label(-2,7,"GND")
          label(-2,8,"XTAL1")
          label(-2,9,"XTAL2")

!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)
!label = \(s,x,y)
 shift(x,y)
  fs("black")
   ss("black")
    lw(200)
     scale(0.5)
      text(s)
!register = \(x,y,v)
   //  == REGISTER ===
    shift(x,y)
     lw(1)
      ss("gray")
       fig(0)
        xy(0, 0)
        xy(4, 0)
      fs("#aa6")
       ss("transparent")
        shift(2,0)
         scale(2,1)
          rect()
         col("black")
          scale(0.4)
           lw(200)
            text(v +"Ω")

!capacitor = \(x,y,v)
   //  == capacitor ===
   shift(x,y)
     lw(1)
      ss("gray")
       fig(0)
        xy(0, 0)
        xy(4, 0)
      fs("#6af")
       ss("transparent")
        shift(2,0-0.3)
         scale(4,1.5)
          rotate(1/4)
           apoly(4,0.3)
         col("black")
          scale(0.4)
           lw(200)
            text(v + "F")

!ecapacitor = \(x,y,v)
    //  == capacitor + ===
    shift(x,y)
     lw(1)
      ss("gray")
       fig(0)
        xy(0, 0)
        xy(4, 0)
      fs("#009")
       ss("transparent")
        shift(2,-0.8)
         scale(3,3)
          rotate(1/4)
           apoly(4,0.2)
         fs("#aaf")
          shift(0,-0.8)
           scale(1.7,0.3)
            circle()
         col("white")
          scale(0.3)
           lw(200)
            text(v + "F")
!led = \(x,y)
   //  == LED ===
   shift(x,y)
     lw(1)
      ss("gray")
       fig(0)
        xy(0, 0)
        xy(4, 0)
      fs("#f00")
       ss("transparent")
        shift(2,0)
         shift(0,-0.3)
          shift(0,-0.5)
           circle()
          rect()
         col("white")
          shift(0,-0.3)
           scale(0.2)
            lw(200)
             text("LED")

!speaker = \(x,y)
  shift(x,y)
     //  == SPEAKER ===
     shift(-5,0)
      ss("#0aa")
       fs("white")
        shift(4,-4)
         lw(2)
          fig(1)
           xy(0,0)
           xy(4,0)
           xy(3,1)
           xy(3,2)
           xy(1,2)
           xy(1,1)
      ss("black")
       lw(2)
        fig()
         xy(5,-2)
         xy(5,0)
      ss("red")
       lw(2)
        fig()
         xy(7,-2)
         xy(7,0)

// ライブラリ ここまで
scale(2)
 fs("#ddf")
  rect()
scale(1.6)
 shift(0,0.1)
  breadboard()
  scale(1/200)
   shift(-100,-95)
    scale(10)
     vwire("green",20,-3,0)
     vwire("blue",0,-3,0)
     label("VCC",0,-4)
     label("GND",20,-4)

     hwire("gray",4,-2,8)
     label("RESET",0,4)
     hwire("gray",5,-2,8)
     label("TXD",-1,5)
     hwire("gray",6,-2,8)
     label("RXD",-1,6)

     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)
     atmega168p(11,4)
     register(0,0,"1K")
     capacitor(0,2,"10p")
     ecapacitor(0,8,"100μ")
     led(0,12)

     speaker(12,0)


tw:ina_ani
mce2
1404575801