!blabel = \(pos,style,s,w)
  if(s != "")
    lw(0.3)
      scale(w/13,1/10)
        ss("transparent")
          fs((style(pos))(1))
            rotate(1/4)
              apoly(4,0.3)
    scale(0.08)
      scale(0.5)
        fs((style(pos))(0))
          text(s)
!label = \(pos,style,s)
  blabel(pos,style,s,1.5)
!mlabel = \(pos,style,s)
  blabel(pos,style,s,3)
!llabel = \(pos,style,s)
  blabel(pos,style,s,5)

!blabel5 = \(dir, s,s1,s2,s3,s4,s5,s6)
    shift(dir*-0.15,0)
      lw(3)
        ss("#ffd")
          scale(0.04)
            circle()
    shift(0, 0)
        label(0,s,s1)
        shift(dir*0.12, 0)
          mlabel(1,s,s2)
        shift(dir*0.27, 0)
          mlabel(2,s,s3)
        shift(dir*0.47, 0)
          llabel(3,s,s4)
        shift(dir*0.67, 0)
          mlabel(4,s,s5)
        shift(dir*0.85, 0)
          mlabel(5,s,s6)
!label5 = \(s, s1,s2,s3,s4,s5,s6)
  blabel5(-1, s,s1,s2,s3,s4,s5,s6)
!label5r = \(s,s1,s2,s3,s4,s5,s6)
  blabel5(1, s,s1,s2,s3,s4,s5,s6)

!choice = \(n)
  evalExtArg(n)
!aStyle = \(n)
  choice(n)
    "black"
    "#fdf"
!nullStyle = \(n)
  choice(n)
    "black"
    "white"
!pinStyle = \(n)
  choice(n)
    "white"
    "gray"
!regStyle = \(n)
  choice(n)
    "black"
    "orange"
!purStyle = \(n)
  choice(n)
    "black"
    "#0F0"
!intStyle = \(n)
  choice(n)
    "red"
    "#fdd"
!spiStyle = \(n)
  choice(n)
    "white"
    "#33f"
!i2cStyle = \(n)
  choice(n)
    "black"
    "#dd3"
!gndStyle = \(n)
  choice(n)
    "white"
    "black"
!vccStyle = \(n)
  choice(n)
    "white"
    "red"
!theme1 = \(n)
  choice(n)
    pinStyle
    regStyle
    purStyle
    intStyle
    purStyle
    aStyle
!themeGnd = \(n)
  choice(n)
    pinStyle
    gndStyle
    nullStyle
    nullStyle
    nullStyle
    aStyle
!themeVcc = \(n)
  choice(n)
    pinStyle
    vccStyle
    nullStyle
    nullStyle
    nullStyle
    aStyle
!themeSpi = \(n)
  choice(n)
    pinStyle
    regStyle
    purStyle
    intStyle
    spiStyle
    aStyle
!themeI2c = \(n)
  choice(n)
    pinStyle
    regStyle
    purStyle
    intStyle
    i2cStyle
    aStyle

scale(0.7)
 font("RoundM+")
  // GRID
  lw(0.1)
    fig()
      xy0(0,-2)
      xy(0,3)
      xy0(-3,0)
      xy(3,0)

  scale(0.7,1.7)
    fs("#39a")
      rect() // edge
  fs("black")
    shift(0,-0.8)
     scale(0.07)
       fs("white")
        text("Arduino Nano")
  shift(0, 0.8)
    scale(0.3,0.3)
      fs("#ddd")
        rect()
      fs("black")
        scale(0.2)
         text("USB")
  scale(0.3,0.3)
    fs("black")
      rotate(1/4)
        rect()
      fs("white")
        scale(0.15)
         text("ATMega328")

  shift(-0.45,-0.7)
    label5(theme1 , "31", "PD1", "TXD", "PCINT17","","1")
    shift(0, 0.1)
     label5(theme1 , "30", "PD0", "RXD", "PCINT16","","0")
    shift(0, 0.2)
     label5(theme1 , "29", "PC6", "RST", "PCINT14","","")
    shift(0, 0.3)
      label5(themeGnd , "","GND","","","","")
    shift(0, 0.4)
     label5(theme1 , "32", "PD2", "INT0", "PCINT18","","2")
    shift(0, 0.5)
     label5(theme1 , "1", "PD3", "INT1", "PCINT19","OC2B","3")
    shift(0, 0.6)
     label5(theme1 , "2", "PD4",   "T0", "PCINT20","XCK","4")
    shift(0, 0.7)
     label5(theme1 , "9", "PD5",   "T1", "PCINT21","OC0B","5")
    shift(0, 0.8)
     label5(theme1 ,"10", "PD6", "AIN0", "PCINT22","OC0A","6")
    shift(0, 0.9)
     label5(theme1 ,"11", "PD7", "AIN1", "PCINT23","","7")
    shift(0, 1.0)
     label5(theme1 ,"12", "PB0", "CLKO", "PCINT0","ICP1","8")
    shift(0, 1.1)
     label5(theme1 ,"13", "PB1", "OC1A", "PCINT1","","9")
    shift(0, 1.2)
     label5(themeSpi ,"14", "PB2", "OC1B", "PCINT2","SS","10")
    shift(0, 1.3)
     label5(themeSpi ,"15", "PB3", "OC2", "PCINT3","MOSI","11")
    shift(0, 1.4)
     label5(themeSpi ,"16", "PB4", "","PCINT4","MISO","12")

  shift(0.45,-0.7)
    label5r(themeVcc ,"","VIN","","","","")
    shift(0, 0.1)
      label5r(themeGnd ,"","GND","","","","")
    shift(0, 0.2)
     label5r(theme1 ,"29", "PC6", "RST", "PCINT14","","")
    shift(0, 0.3)
     label5r(themeVcc ,"","5V","","","","")
    shift(0, 0.4)
     label5r(theme1 ,"22", "", "ADC7", "","","A7")
    shift(0, 0.5)
     label5r(theme1 ,"19", "", "ADC6", "","","A6")
    shift(0, 0.6)
     label5r(themeI2c ,"28", "PC5","ADC5", "PCINT13","SCL","19/A5")
    shift(0, 0.7)
     label5r(themeI2c ,"27", "PC4","ADC4", "PCINT12","SDA","18/A4")
    shift(0, 0.8)
     label5r(theme1 ,"26", "PC3","ADC3", "PCINT11","","17/A3")
    shift(0, 0.9)
     label5r(theme1 ,"25", "PC2","ADC2", "PCINT10","","16/A2")
    shift(0, 1.0)
     label5r(theme1 ,"24", "PC1","ADC1", "PCINT9","","15/A1")
    shift(0, 1.1)
     label5r(theme1 ,"23", "PC0","ADC0", "PCINT8","","14/A0")
    shift(0, 1.2)
     label5r(themeVcc ,"21", "AREF", "", "","","")
    shift(0, 1.3)
     label5r(themeVcc ,"","3V3","","","","")
    shift(0, 1.4)
     label5r(themeSpi ,"17", "PB5","", "PCINT5","SCK","13")
tw:ina_ani
mce2
1625831693