diff --git a/python/pcb.py b/python/pcb.py index 688a92f3a8ef89309692208fce0d9b185f9c27e2..f69d3e867e803ffcd64c498395489bc378aed926 100755 --- a/python/pcb.py +++ b/python/pcb.py @@ -4563,6 +4563,446 @@ class ADXL343(part): # ICs # +class SAMD21E(part): + # + # TQFP + # + def __init__(self,value=''): + self.value = value + self.pad = [point(0,0,0)] + self.labels = [] + d = 8.5/2/25.4 + w = 0.4/2/25.4 + h = 1.6/2/25.4 + p = 0.8/25.4 + l = 0.004 + 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)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'24-',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,'25+',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,'A27',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,'RST',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,'A28',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,'GND',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,'VCR',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,'VIN',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,'CLK',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,'DIO',line=l,angle=-90)) + +class SAMD11D(part): + # + # SOIC + # + 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,'1A05')) + # + # 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,'A06')) + # + # 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,'A07')) + # + # 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,'A08')) + # + # 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,'A09')) + # + # 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,'A14')) + # + # 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,'A15')) + # + # 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,'A16')) + # + # 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,'A22')) + # + # 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,'A23')) + # + # 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,'RST')) + # + # 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,'CLK')) + # + # 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,'DIO')) + # + # 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,'24-')) + # + # 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,'25+')) + # + # 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,'GND')) + # + # 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,'VCC')) + # + # 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,'A02')) + # + # 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,'A03')) + # + # 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,'A04')) + +class ATtiny1614(part): + # + # SOIC + # + def __init__(self,value=''): + self.value = value + self.pad = [point(0,0,0)] + self.labels = [] + d = 0.11 + w = 0.015 + h = .03 + pad = cube(-h,h,-w,w,0,0) + # + # pin 1 + # + self.shape = translate(pad,-d,.15,0) + self.shape = add(self.shape,cylinder(-d-h,.15,0,0,w)) + self.pad.append(point(-d,.15,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,.1,0)) + self.pad.append(point(-d,.1,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,.050,0)) + self.pad.append(point(-d,.05,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,0,0)) + self.pad.append(point(-d,0,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,-.05,0)) + self.pad.append(point(-d,-.05,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,-.1,0)) + self.pad.append(point(-d,-.1,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'RB3')) + # + # pin 7 + # + self.shape = add(self.shape,translate(pad,-d,-.15,0)) + self.pad.append(point(-d,-.15,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'TB2')) + # + # pin 8 + # + self.shape = add(self.shape,translate(pad,d,-.15,0)) + self.pad.append(point(d,-.15,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB1')) + # + # pin 9 + # + self.shape = add(self.shape,translate(pad,d,-.1,0)) + self.pad.append(point(d,-.1,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB0')) + # + # pin 10 + # + self.shape = add(self.shape,translate(pad,d,-.05,0)) + self.pad.append(point(d,-.05,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'UPDI')) + # + # pin 11 + # + self.shape = add(self.shape,translate(pad,d,0,0)) + self.pad.append(point(d,0,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA1')) + # + # pin 12 + # + self.shape = add(self.shape,translate(pad,d,.050,0)) + self.pad.append(point(d,.05,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA2')) + # + # pin 13 + # + self.shape = add(self.shape,translate(pad,d,.1,0)) + self.pad.append(point(d,.1,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA3')) + # + # pin 14 + self.shape = add(self.shape,translate(pad,d,.15,0)) + self.pad.append(point(d,.15,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND')) + class FT230XS(part): def __init__(self,value=''): self.value = value @@ -4580,7 +5020,7 @@ class FT230XS(part): 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,'TXD',line=l)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'1TXD',line=l)) # # pin 2 # @@ -4672,6 +5112,9 @@ class FT230XS(part): class ATtiny412(part): + # + # SOIC150 + # def __init__(self,value=''): self.value = value self.pad = [point(0,0,0)] @@ -4730,7 +5173,10 @@ class ATtiny412(part): self.pad.append(point(d,.075,0)) self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND')) -class SAMD11C_SOIC(part): +class SAMD11C(part): + # + # SOIC + # def __init__(self,value=''): self.value = value self.pad = [point(0,0,0)] @@ -4745,7 +5191,7 @@ class SAMD11C_SOIC(part): self.shape = translate(pad,-d,.15,0) self.shape = add(self.shape,cylinder(-d-h,.15,0,0,w)) self.pad.append(point(-d,.15,0)) - self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A05')) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'1A05')) # # pin 2: PA08 # @@ -4820,6 +5266,7 @@ class SAMD11C_SOIC(part): self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A02')) # # pin 14: PA04 + # self.shape = add(self.shape,translate(pad,d,.15,0)) self.pad.append(point(d,.15,0)) self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A04'))