update to python3
[hw/altusmetrum] / packages / molex / miniusb.py
1 #!/usr/bin/python3
2 # Copyright 2007,2024 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for
5 #   Molex MiniUSB R/A 5 pos SMD connector 54819-0572, DigiKey WM17116CT-ND
6 #
7
8 # dimensions in mm from 548190572_sd.pdf datasheet
9 TabWidth = 2.05
10 Tab1Height = 4.0
11 Tab2Height = 3.5
12 TabCenters = 4.25
13 BetweenTabs = 7.8
14
15 PinWidth = 0.5
16 PinHeight = 2.25
17 PinSpacing = 0.8
18 PinStart = 3.1 + Tab1Height/2
19
20 CenterLine = TabWidth + BetweenTabs/2
21
22 import sys
23
24 # we're going to use the 1/100 of a mil fundamental unit form
25 def mm2mils100( mm ):
26         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
27
28 print('# author: Bdale Garbee')
29 print('# email: bdale@gag.com')
30 print('# dist-license: GPL 2')
31 print('# use-license: unlimited')
32
33 print('Element[0x0 "MiniUSB" "" "" 0 0 -10161 -12011 0 100 0x0]')
34 print("(")
35 print('   Pad[', \
36         mm2mils100(CenterLine), \
37         mm2mils100(PinStart + PinWidth/2), \
38         mm2mils100(CenterLine), \
39         mm2mils100(PinStart + PinHeight - PinWidth/2), \
40         mm2mils100(PinWidth), \
41         mm2mils100(PinSpacing - PinWidth), \
42         mm2mils100(PinWidth + 0.2), \
43         '"D+" "3" 0x0100]')
44
45 print('   Pad[', \
46         mm2mils100(CenterLine + PinSpacing), \
47         mm2mils100(PinStart + PinWidth/2), \
48         mm2mils100(CenterLine + PinSpacing), \
49         mm2mils100(PinStart + PinHeight - PinWidth/2), \
50         mm2mils100(PinWidth), \
51         mm2mils100(PinSpacing - PinWidth), \
52         mm2mils100(PinWidth + 0.2), \
53         '"D-" "2" 0x0100]')
54
55 print('   Pad[', \
56         mm2mils100(CenterLine - PinSpacing), \
57         mm2mils100(PinStart + PinWidth/2), \
58         mm2mils100(CenterLine - PinSpacing), \
59         mm2mils100(PinStart + PinHeight - PinWidth/2), \
60         mm2mils100(PinWidth), \
61         mm2mils100(PinSpacing - PinWidth), \
62         mm2mils100(PinWidth + 0.2), \
63         '"HS" "4" 0x0100]')
64
65 print('   Pad[', \
66         mm2mils100(CenterLine + PinSpacing*2), \
67         mm2mils100(PinStart + PinWidth/2), \
68         mm2mils100(CenterLine + PinSpacing*2), \
69         mm2mils100(PinStart + PinHeight - PinWidth/2), \
70         mm2mils100(PinWidth), \
71         mm2mils100(PinSpacing - PinWidth), \
72         mm2mils100(PinWidth + 0.2), \
73         '"VBUS" "1" 0x0100]')
74
75 print('   Pad[', \
76         mm2mils100(CenterLine - PinSpacing*2), \
77         mm2mils100(PinStart + PinWidth/2), \
78         mm2mils100(CenterLine - PinSpacing*2), \
79         mm2mils100(PinStart + PinHeight - PinWidth/2), \
80         mm2mils100(PinWidth), \
81         mm2mils100(PinSpacing - PinWidth), \
82         mm2mils100(PinWidth + 0.2), \
83         '"GND" "5" 0x0100]')
84
85 TabRowTwo = Tab1Height/2 + TabCenters - Tab2Height/2
86 TabColTwo = TabWidth + BetweenTabs
87
88 print('   Pad[', \
89         mm2mils100(TabWidth/2), \
90         mm2mils100(TabWidth/2), \
91         mm2mils100(TabWidth/2), \
92         mm2mils100(Tab1Height - TabWidth/2), \
93         mm2mils100(TabWidth), \
94         mm2mils100(PinSpacing - PinWidth), \
95         mm2mils100(TabWidth + 0.2), \
96         '"tab1" "G" 0x0100]')
97
98 print('   Pad[', \
99         mm2mils100(TabWidth/2), \
100         mm2mils100(TabRowTwo + TabWidth/2), \
101         mm2mils100(TabWidth/2), \
102         mm2mils100(TabRowTwo + Tab2Height - TabWidth/2), \
103         mm2mils100(TabWidth), \
104         mm2mils100(PinSpacing - PinWidth), \
105         mm2mils100(TabWidth + 0.2), \
106         '"tab2" "G" 0x0100]')
107
108 print('   Pad[', \
109         mm2mils100(TabColTwo + TabWidth/2), \
110         mm2mils100(TabWidth/2), \
111         mm2mils100(TabColTwo + TabWidth/2), \
112         mm2mils100(Tab1Height - TabWidth/2), \
113         mm2mils100(TabWidth), \
114         mm2mils100(PinSpacing - PinWidth), \
115         mm2mils100(TabWidth + 0.2), \
116         '"tab3" "G" 0x0100]')
117
118 print('   Pad[', \
119         mm2mils100(TabColTwo + TabWidth/2), \
120         mm2mils100(TabRowTwo + TabWidth/2), \
121         mm2mils100(TabColTwo + TabWidth/2), \
122         mm2mils100(TabRowTwo + Tab2Height - TabWidth/2), \
123         mm2mils100(TabWidth), \
124         mm2mils100(PinSpacing - PinWidth), \
125         mm2mils100(TabWidth + 0.2), \
126         '"tab4" "G" 0x0100]')
127
128 print(")")