Skip to content
Snippets Groups Projects
pcb.py 282 KiB
Newer Older
Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
      #
      # pin 3: ground
      #
      self.shape = add(self.shape,translate(pad_SOT23,.045,0,0))
      self.pad.append(point(.045,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'gnd'))

class regulator_SOT223(part):
   #
   # Zetex ZLDO1117
   #
   def __init__(self,value=''):
      self.value = value
      self.x = 0
      self.y = 0
      self.z = 0
      self.pad = [point(0,0,0)]
      self.labels = []
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      pad_SOT223 = cube(-.02,.02,-.03,.03,0,0)
      pad_SOT223_ground = cube(-.065,.065,-.03,.03,0,0)
Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415
      #
      # pin 1: GND
      #
      self.shape = translate(pad_SOT223,-.09,-.12,0)
      self.pad.append(point(-.09,-.12,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'1G'))
      #
      # pin 2: output
      #
      self.shape = add(self.shape,translate(pad_SOT223,0,-.12,0))
      self.pad.append(point(0,-.12,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'O'))
      #
      # pin 3: input
      #
      self.shape = add(self.shape,translate(pad_SOT223,.09,-.12,0))
      self.pad.append(point(.09,-.12,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'I'))
      #
      # pin 4: output
      #
      self.shape = add(self.shape,translate(pad_SOT223_ground,0,.12,0))
      self.pad.append(point(0,.12,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'out'))

class A4953_SOICN(part):
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1: GND
      #
      self.shape = translate(pad_SOIC,-.11,.075,0)
      self.shape = add(self.shape,cylinder(-.153,.075,0,0,.015))
      self.pad.append(point(-.11,.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 2: IN2
      #
      self.shape = add(self.shape,translate(pad_SOIC,-.11,.025,0))
      self.pad.append(point(-.11,.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IN2'))
      #
      # pin 3: IN1
      #
      self.shape = add(self.shape,translate(pad_SOIC,-.11,-.025,0))
      self.pad.append(point(-.11,-.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IN1'))
      #
      # pin 4: VREF
      #
      self.shape = add(self.shape,translate(pad_SOIC,-.11,-.075,0))
      self.pad.append(point(-.11,-.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VREF'))
      #
      # pin 5: VBB
      #
      self.shape = add(self.shape,translate(pad_SOIC,.11,-.075,0))
      self.pad.append(point(.11,-.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VBB'))
      #
      # pin 6: OUT1
      #
      self.shape = add(self.shape,translate(pad_SOIC,.11,-.025,0))
      self.pad.append(point(.11,-.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'OUT1'))
      #
      # pin 7: LSS
      #
      self.shape = add(self.shape,translate(pad_SOIC,.11,.025,0))
      self.pad.append(point(.11,.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'LSS'))
      #
      # pin 8: OUT2
      #
      self.shape = add(self.shape,translate(pad_SOIC,.11,.075,0))
      self.pad.append(point(.11,.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'OUT2'))
      #
      # thermal pad
      #
      self.shape = add(self.shape,rectangle(-.04,.04,-.075,.075))

pad_SM8 = cube(-.035,.035,-.016,.016,0,0)

class H_bridge_SM8(part):
   #
   # Zetex ZXMHC3A01T8
   #
   def __init__(self,value=''):
      self.value = value
      self.x = 0
      self.y = 0
      self.z = 0
      self.pad = [point(0,0,0)]
      self.labels = []
      d = .13
      #
      # pin 1: G3 (right N gate)
      #
      self.shape = translate(pad_SM8,-d,.09,0)
      self.shape = add(self.shape,cylinder(-d-.035,.09,0,0,.016))
      self.pad.append(point(-d,.09,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GRN'))
      #
      # pin 2: S2 S3 (N source)
      #
      self.shape = add(self.shape,translate(pad_SM8,-d,.03,0))
      self.pad.append(point(-d,.03,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SN'))
      #
      # pin 3: G2 (left N gate)
      #
      self.shape = add(self.shape,translate(pad_SM8,-d,-.03,0))
      self.pad.append(point(-d,-.03,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GLN'))
      #
      # pin 4: G1 (left P gate)
      #
      self.shape = add(self.shape,translate(pad_SM8,-d,-.09,0))
      self.pad.append(point(-d,-.09,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GLP'))
      #
      # pin 5: D1 D2 (left drain)
      #
      self.shape = add(self.shape,translate(pad_SM8,d,-.09,0))
      self.pad.append(point(d,-.09,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DL'))
      #
      # pin 6: S1 S4 (P source)
      #
      self.shape = add(self.shape,translate(pad_SM8,d,-.03,0))
      self.pad.append(point(d,-.03,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SP'))
      #
      # pin 7: D3 D4 (right drain)
      #
      self.shape = add(self.shape,translate(pad_SM8,d,.03,0))
      self.pad.append(point(d,.03,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DR'))
      #
      # pin 8: G4 (right N gate)
      #
      self.shape = add(self.shape,translate(pad_SM8,d,.09,0))
      self.pad.append(point(d,.09,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GRP'))

pad_mic = cylinder(0,0,0,0,.02)

class mic_SPU0414HR5H(part):
   #
   # Knowles SPU0414HR5H-SB
   #
   def __init__(self,value=''):
      s = 0.004
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1: Vdd
      #
      self.shape = translate(pad_mic,.033,.048,0)
      self.pad.append(point(.033,.048,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'V1',line=s))
      #
      # pin 2: GND
      #
      self.shape = add(self.shape,translate(pad_mic,.033,-.048,0))
      self.pad.append(point(.033,-.048,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=s))
      #
      # pin 3: gain
      #
      self.shape = add(self.shape,translate(pad_mic,-.033,-.048,0))
      self.pad.append(point(-.033,-.048,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'gain',line=s))
      #
      # pin 4: out
      #
      self.shape = add(self.shape,translate(pad_mic,-.033,.048,0))
      self.pad.append(point(-.033,.048,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'out',line=s))

class mic_SPM1437(part):
   #
   # Knowles SPM1437HM4H-B
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1
      #
      self.shape = translate(pad_mic,-.046,.065,0)
      #self.shape = add(self.shape,cylinder(-.183,.075,0,0,.015))
      self.pad.append(point(-.046,.065,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad_mic,-.046,0,0))
      self.pad.append(point(-.046,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SEL'))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad_mic,-.046,-.065,0))
      self.pad.append(point(-.046,-.065,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad_mic,.046,-.065,0))
      self.pad.append(point(.046,-.065,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'CLK'))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad_mic,.046,0,0))
      self.pad.append(point(.046,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DAT'))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad_mic,.046,.065,0))
      self.shape = add(self.shape,translate(pad_mic,.038,.057,0))
      self.pad.append(point(.046,.065,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'V'))

pad_accel = cube(-.03,.03,-.0125,.0125,0,0)
pad_accel90 = cube(-.0125,.0125,-.03,.03,0,0)

class accel_MXD6235M(part):
   #
   # MEMSIC MXD6235M
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1
      #
      self.shape = translate(pad_accel,-.1,.05,0)
      self.shape = add(self.shape,cylinder(-.13,.05,0,0,.0125))
      self.pad.append(point(-.1,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD'))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad_accel,-.1,0,0))
      self.pad.append(point(-.1,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'TP'))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad_accel,-.1,-.05,0))
      self.pad.append(point(-.1,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G'))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad_accel90,0,-.1,0))
      self.pad.append(point(0,-.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC'))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad_accel,.1,-.05,0))
      self.pad.append(point(.1,-.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC'))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad_accel,.1,0,0))
      self.pad.append(point(.1,0,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'Y'))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad_accel,.1,.05,0))
      self.pad.append(point(.1,.05,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'X'))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad_accel90,0,.1,0))
      self.pad.append(point(0,.1,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'V'))
      #
      # ground plane
      #
      self.shape = add(self.shape,cube(-.05,.05,-.05,.05,0,0))

pad_cc_14_1 = cube(-.014,.014,-.0075,.0075,0,0)
pad_cc_14_1_90 = cube(-.0075,.0075,-.014,.014,0,0)

class ADXL343(part):
   #
   # ADI ADXL343 accelerometer
   #
   def __init__(self,value=''):
      d = 0.8/25.4
      w = 1.01/25.4
      s = 0.004
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1
      #
      self.shape = translate(pad_cc_14_1,-w,2.5*d,0)
      self.pad.append(point(-w,2.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,"VD1",line=s))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,-w,1.5*d,0))
      self.pad.append(point(-w,1.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=s))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,-w,.5*d,0))
      self.pad.append(point(-w,.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RSV',line=s))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,-w,-.5*d,0))
      self.pad.append(point(-w,-.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=s))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,-w,-1.5*d,0))
      self.pad.append(point(-w,-1.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=s))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,-w,-2.5*d,0))
      self.pad.append(point(-w,-2.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VS',line=s))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad_cc_14_1_90,0,-2.5*d,0))
      self.pad.append(point(0,-2.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'-CS',angle=90,line=s))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,w,-2.5*d,0))
      self.pad.append(point(w,-2.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'INT1',line=s))
      #
      # pin 9
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,w,-1.5*d,0))
      self.pad.append(point(w,-1.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'INT2',line=s))
      #
      # pin 10
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,w,-.5*d,0))
      self.pad.append(point(w,-.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC',line=s))
      #
      # pin 11
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,w,.5*d,0))
      self.pad.append(point(w,.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RSV',line=s))
      #
      # pin 12
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,w,1.5*d,0))
      self.pad.append(point(w,1.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'ALT',line=s))
      #
      # pin 13
      #
      self.shape = add(self.shape,translate(pad_cc_14_1,w,2.5*d,0))
      self.pad.append(point(w,2.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SDA',line=s))
      #
      # pin 14
      #
      self.shape = add(self.shape,translate(pad_cc_14_1_90,0,2.5*d,0))
      self.pad.append(point(0,2.5*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SCL',angle=90,line=s))

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
class VL53L1X(part):
   #
   # ST VL53L1X time of flight sensor 
   #
   def __init__(self,value=''):
      pad = cube(-.0075,.0075,-.0075,.0075,0,0)
      d = 0.8/25.4
      w = 0.8/25.4
      s = 0.004
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      #
      # pin 1
      #
      self.shape = translate(pad,-w,-2*d,0)
      self.pad.append(point(-w,-2*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,"1V",line=s))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad,-w,-1*d,0))
      self.pad.append(point(-w,-1*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G',line=s))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad,-w,0*d,0))
      self.pad.append(point(-w,0*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G',line=s))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad,-w,1*d,0))
      self.pad.append(point(-w,1*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G',line=s))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad,-w,2*d,0))
      self.pad.append(point(-w,2*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'XS',line=s))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad,0,2*d,0))
      self.pad.append(point(0,2*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G',line=s))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad,w,2*d,0))
      self.pad.append(point(w,2*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'IO',line=s))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad,w,1*d,0))
      self.pad.append(point(w,1*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'NC',line=s))
      #
      # pin 9
      #
      self.shape = add(self.shape,translate(pad,w,0*d,0))
      self.pad.append(point(w,0*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SDA',line=s))
      #
      # pin 10
      #
      self.shape = add(self.shape,translate(pad,w,-1*d,0))
      self.pad.append(point(w,-1*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SCL',line=s))
      #
      # pin 11
      #
      self.shape = add(self.shape,translate(pad,w,-2*d,0))
      self.pad.append(point(w,-2*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'V',line=s))
      #
      # pin 12
      #
      self.shape = add(self.shape,translate(pad,0,-2*d,0))
      self.pad.append(point(0,-2*d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'G',line=s))

############################################################
Neil Gershenfeld (test)'s avatar
wip
Neil Gershenfeld (test) committed
# ICs
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
############################################################

class AVRDB28(part):
   #
   # AVR*DB28
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      d = 9.01/2/25.4 # spacing
      w = 0.4/2/25.4 # width
      h = 1.4/2/25.4 # height
      p = 0.8/25.4 # pitch
      l = 0.004 # text
      pad = cube(-h,h,-w,w,0,0)
      padv = cube(-w,w,-h,h,0,0)
      #
      # pin 1
      #
      self.shape = translate(pad,-d,3.5*p,0)
      self.shape = add(self.shape,cylinder(-d-h,3.5*p,0,0,w))
      self.pad.append(point(-d,3.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'.PA3',line=l))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad,-d,2.5*p,0))
      self.pad.append(point(-d,2.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA4',line=l))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad,-d,1.5*p,0))
      self.pad.append(point(-d,1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA5',line=l))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad,-d,.5*p,0))
      self.pad.append(point(-d,.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA6',line=l))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad,-d,-.5*p,0))
      self.pad.append(point(-d,-.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA7',line=l))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad,-d,-1.5*p,0))
      self.pad.append(point(-d,-1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC0',line=l))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad,-d,-2.5*p,0))
      self.pad.append(point(-d,-2.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC1',line=l))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad,-d,-3.5*p,0))
      self.pad.append(point(-d,-3.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC2',line=l))
      #
      # pin 9
      #
      self.shape = add(self.shape,translate(padv,-3.5*p,-d,0))
      self.pad.append(point(-3.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC3',line=l,angle=-90))
      #
      # pin 10
      #
      self.shape = add(self.shape,translate(padv,-2.5*p,-d,0))
      self.pad.append(point(-2.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VIO2',line=l,angle=-90))
      #
      # pin 11
      #
      self.shape = add(self.shape,translate(padv,-1.5*p,-d,0))
      self.pad.append(point(-1.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD1',line=l,angle=-90))
      #
      # pin 12
      #
      self.shape = add(self.shape,translate(padv,-.5*p,-d,0))
      self.pad.append(point(-.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD2',line=l,angle=-90))
      #
      # pin 13
      #
      self.shape = add(self.shape,translate(padv,.5*p,-d,0))
      self.pad.append(point(.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD3',line=l,angle=-90))
      #
      # pin 14
      #
      self.shape = add(self.shape,translate(padv,1.5*p,-d,0))
      self.pad.append(point(1.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD4',line=l,angle=-90))
      #
      # pin 15
      #
      self.shape = add(self.shape,translate(padv,2.5*p,-d,0))
      self.pad.append(point(2.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD5',line=l,angle=-90))
      #
      # pin 16
      #
      self.shape = add(self.shape,translate(padv,3.5*p,-d,0))
      self.pad.append(point(3.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD6',line=l,angle=-90))
      #
      # pin 17
      #
      self.shape = add(self.shape,translate(pad,d,-3.5*p,0))
      self.pad.append(point(d,-3.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PD7',line=l))
      #
      # pin 18
      #
      self.shape = add(self.shape,translate(pad,d,-2.5*p,0))
      self.pad.append(point(d,-2.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'AVDD',line=l))
      #
      # pin 19
      #
      self.shape = add(self.shape,translate(pad,d,-1.5*p,0))
      self.pad.append(point(d,-1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=l))
      #
      # pin 20
      #
      self.shape = add(self.shape,translate(pad,d,-.5*p,0))
      self.pad.append(point(d,-.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PF0',line=l))
      #
      # pin 21
      #
      self.shape = add(self.shape,translate(pad,d,.5*p,0))
      self.pad.append(point(d,.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PF1',line=l))
      #
      # pin 22
      #
      self.shape = add(self.shape,translate(pad,d,1.5*p,0))
      self.pad.append(point(d,1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PF2',line=l))
      #
      # pin 23
      #
      self.shape = add(self.shape,translate(pad,d,2.5*p,0))
      self.pad.append(point(d,2.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PF3',line=l))
      #
      # pin 24
      #
      self.shape = add(self.shape,translate(pad,d,3.5*p,0))
      self.pad.append(point(d,3.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PF4',line=l))
      #
      # pin 25
      #
      self.shape = add(self.shape,translate(padv,3.5*p,d,0))
      self.pad.append(point(3.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PF5',line=l,angle=-90))
      #
      # pin 26
      #
      self.shape = add(self.shape,translate(padv,2.5*p,d,0))
      self.pad.append(point(2.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PF6',line=l,angle=-90))
      #
      # pin 27
      #
      self.shape = add(self.shape,translate(padv,1.5*p,d,0))
      self.pad.append(point(1.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'UPDI',line=l,angle=-90))
      #
      # pin 28
      #
      self.shape = add(self.shape,translate(padv,.5*p,d,0))
      self.pad.append(point(.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VDD',line=l,angle=-90))
      #
      # pin 29
      #
      self.shape = add(self.shape,translate(padv,-.5*p,d,0))
      self.pad.append(point(-.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=l,angle=-90))
      #
      # pin 30
      #
      self.shape = add(self.shape,translate(padv,-1.5*p,d,0))
      self.pad.append(point(-1.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA0',line=l,angle=-90))
      #
      # pin 31
      #
      self.shape = add(self.shape,translate(padv,-2.5*p,d,0))
      self.pad.append(point(-2.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA1',line=l,angle=-90))
      #
      # pin 32
      #
      self.shape = add(self.shape,translate(padv,-3.5*p,d,0))
      self.pad.append(point(-3.5*p,d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA2',line=l,angle=-90))
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
class ATtiny3216(part):
   #
   # SOIC-20
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
      d = 9.82/2/25.4
      w = .63/2/25.4
      h = 1.9/2/25.4
      pad = cube(-h,h,-w,w,0,0)
      #
      # pin 1
      #
      self.shape = translate(pad,-d,.225,0)
      self.shape = add(self.shape,cylinder(-d-h,.225,0,0,w))
      self.pad.append(point(-d,.225,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'1VCC'))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad,-d,.175,0))
      self.pad.append(point(-d,.175,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA4'))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad,-d,.125,0))
      self.pad.append(point(-d,.125,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA5'))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad,-d,.075,0))
      self.pad.append(point(-d,.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA6'))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad,-d,.025,0))
      self.pad.append(point(-d,.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA7'))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad,-d,-.025,0))
      self.pad.append(point(-d,-.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB5'))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad,-d,-.075,0))
      self.pad.append(point(-d,-.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB4'))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad,-d,-.125,0))
      self.pad.append(point(-d,-.125,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RB3'))
      #
      # pin 9
      #
      self.shape = add(self.shape,translate(pad,-d,-.175,0))
      self.pad.append(point(-d,-.175,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'TB2'))
      #
      # pin 10
      #
      self.shape = add(self.shape,translate(pad,-d,-.225,0))
      self.pad.append(point(-d,-.225,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB1'))
      #
      # pin 11
      #
      self.shape = add(self.shape,translate(pad,d,-.225,0))
      self.pad.append(point(d,-.225,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB0'))
      #
      # pin 12
      #
      self.shape = add(self.shape,translate(pad,d,-.175,0))
      self.pad.append(point(d,-.175,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC0'))
      #
      # pin 13
      #
      self.shape = add(self.shape,translate(pad,d,-.125,0))
      self.pad.append(point(d,-.125,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC1'))
      #
      # pin 14
      #
      self.shape = add(self.shape,translate(pad,d,-.075,0))
      self.pad.append(point(d,-.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC2'))
      #
      # pin 15
      #
      self.shape = add(self.shape,translate(pad,d,-.025,0))
      self.pad.append(point(d,-.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PC3'))
      #
      # pin 16
      #
      self.shape = add(self.shape,translate(pad,d,.025,0))
      self.pad.append(point(d,.025,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'UPDI'))
      #
      # pin 17
      #
      self.shape = add(self.shape,translate(pad,d,.075,0))
      self.pad.append(point(d,.075,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA1'))
      #
      # pin 18
      #
      self.shape = add(self.shape,translate(pad,d,.125,0))
      self.pad.append(point(d,.125,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA2'))
      #
      # pin 19
      #
      self.shape = add(self.shape,translate(pad,d,.175,0))
      self.pad.append(point(d,.175,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA3'))
      #
      # pin 20
      #
      self.shape = add(self.shape,translate(pad,d,.225,0))
      self.pad.append(point(d,.225,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND'))

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
class SAMD21E(part):
   #
   # TQFP
   #
   def __init__(self,value=''):
      self.value = value
      self.pad = [point(0,0,0)]
      self.labels = []
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      d = 9.01/2/25.4 # spacing
      w = 0.4/2/25.4 # width
      h = 1.4/2/25.4 # height
      p = 0.8/25.4 # pitch
      l = 0.004 # text
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
      pad = cube(-h,h,-w,w,0,0)
      padv = cube(-w,w,-h,h,0,0)
      #
      # pin 1
      #
      self.shape = translate(pad,-d,3.5*p,0)
      self.shape = add(self.shape,cylinder(-d-h,3.5*p,0,0,w))
      self.pad.append(point(-d,3.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'1A0',line=l))
      #
      # pin 2
      #
      self.shape = add(self.shape,translate(pad,-d,2.5*p,0))
      self.pad.append(point(-d,2.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A01',line=l))
      #
      # pin 3
      #
      self.shape = add(self.shape,translate(pad,-d,1.5*p,0))
      self.pad.append(point(-d,1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A02',line=l))
      #
      # pin 4
      #
      self.shape = add(self.shape,translate(pad,-d,.5*p,0))
      self.pad.append(point(-d,.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A03',line=l))
      #
      # pin 5
      #
      self.shape = add(self.shape,translate(pad,-d,-.5*p,0))
      self.pad.append(point(-d,-.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A04',line=l))
      #
      # pin 6
      #
      self.shape = add(self.shape,translate(pad,-d,-1.5*p,0))
      self.pad.append(point(-d,-1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A05',line=l))
      #
      # pin 7
      #
      self.shape = add(self.shape,translate(pad,-d,-2.5*p,0))
      self.pad.append(point(-d,-2.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A06',line=l))
      #
      # pin 8
      #
      self.shape = add(self.shape,translate(pad,-d,-3.5*p,0))
      self.pad.append(point(-d,-3.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A07',line=l))
      #
      # pin 9
      #
      self.shape = add(self.shape,translate(padv,-3.5*p,-d,0))
      self.pad.append(point(-3.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VAN',line=l,angle=-90))
      #
      # pin 10
      #
      self.shape = add(self.shape,translate(padv,-2.5*p,-d,0))
      self.pad.append(point(-2.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=l,angle=-90))
      #
      # pin 11
      #
      self.shape = add(self.shape,translate(padv,-1.5*p,-d,0))
      self.pad.append(point(-1.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A08',line=l,angle=-90))
      #
      # pin 12
      #
      self.shape = add(self.shape,translate(padv,-.5*p,-d,0))
      self.pad.append(point(-.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A09',line=l,angle=-90))
      #
      # pin 13
      #
      self.shape = add(self.shape,translate(padv,.5*p,-d,0))
      self.pad.append(point(.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A10',line=l,angle=-90))
      #
      # pin 14
      #
      self.shape = add(self.shape,translate(padv,1.5*p,-d,0))
      self.pad.append(point(1.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A11',line=l,angle=-90))
      #
      # pin 15
      #
      self.shape = add(self.shape,translate(padv,2.5*p,-d,0))
      self.pad.append(point(2.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A14',line=l,angle=-90))
      #
      # pin 16
      #
      self.shape = add(self.shape,translate(padv,3.5*p,-d,0))
      self.pad.append(point(3.5*p,-d,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A15',line=l,angle=-90))
      #
      # pin 17
      #
      self.shape = add(self.shape,translate(pad,d,-3.5*p,0))
      self.pad.append(point(d,-3.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A16',line=l))
      #
      # pin 18
      #
      self.shape = add(self.shape,translate(pad,d,-2.5*p,0))
      self.pad.append(point(d,-2.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A17',line=l))
      #
      # pin 19
      #
      self.shape = add(self.shape,translate(pad,d,-1.5*p,0))
      self.pad.append(point(d,-1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A18',line=l))
      #
      # pin 20
      #
      self.shape = add(self.shape,translate(pad,d,-.5*p,0))
      self.pad.append(point(d,-.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A19',line=l))
      #
      # pin 21
      #
      self.shape = add(self.shape,translate(pad,d,.5*p,0))
      self.pad.append(point(d,.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A22',line=l))
      #
      # pin 22
      #
      self.shape = add(self.shape,translate(pad,d,1.5*p,0))
      self.pad.append(point(d,1.5*p,0))
      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A23',line=l))
      #
      # pin 23
      #
      self.shape = add(self.shape,translate(pad,d,2.5*p,0))
      self.pad.append(point(d,2.5*p,0))