2 # Copyright 2021 by Bdale Garbee <bdale@gag.com>. GPLv3
4 # Program to emit PCB footprint for NHD-C0216CZ-FSW-FBW-3V3 2x16 text LCD
7 # dimensions in mm from NHD-C0216CZ-FSW-FBW-3V3.pdf datasheet
16 ViewHCtr = 15.8 / 2 + 7.6 - BodyHeight / 2
18 # centered rectangle of holes for alignment pins
23 # contacts for LED backlight
26 BLDiam = 1.25 # a 1.2 x 0.6 slot is called for
30 # we're going to use the 1/100 of a mil fundamental unit form
32 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
34 print '# author: Bdale Garbee'
35 print '# email: bdale@gag.com'
36 print '# dist-license: GPL 3'
37 print '# use-license: unlimited'
39 print 'Element[0x0 "NHD-C0216CZ" "" "" 0 0 0 0 0 100 0x0]'
43 # pin( x y thickness clearance mask drillhole name number flags)
44 for pin in range (1,Pins+1):
51 mm2mils100((pin - 5.5)*PinSpacing), \
52 mm2mils100(-BodyHeight/2+PinOffset), \
53 mm2mils100(PinDiam * 1.75), \
55 mm2mils100(PinDiam * 1.75) + 600, \
56 mm2mils100(PinDiam), \
57 '"pin%i"' % (pin), '"%i"' % (pin), Flags, ']'
59 print ' ElementLine[',\
60 -mm2mils100(BodyWidth/2), \
61 -mm2mils100(BodyHeight/2), \
62 mm2mils100(BodyWidth/2), \
63 -mm2mils100(BodyHeight/2), \
66 print ' ElementLine[',\
67 -mm2mils100(BodyWidth/2), \
68 -mm2mils100(BodyHeight/2), \
69 -mm2mils100(BodyWidth/2), \
70 mm2mils100(BodyHeight/2), \
73 print ' ElementLine[',\
74 -mm2mils100(BodyWidth/2), \
75 mm2mils100(BodyHeight/2), \
76 mm2mils100(BodyWidth/2), \
77 mm2mils100(BodyHeight/2), \
80 print ' ElementLine[',\
81 mm2mils100(BodyWidth/2), \
82 mm2mils100(BodyHeight/2), \
83 mm2mils100(BodyWidth/2), \
84 -mm2mils100(BodyHeight/2), \
90 print ' ElementLine[',\
91 mm2mils100(-ViewWidth/2), \
92 mm2mils100(ViewHCtr + ViewHeight/2), \
93 mm2mils100(ViewWidth/2), \
94 mm2mils100(ViewHCtr + ViewHeight/2), \
98 print ' ElementLine[',\
99 mm2mils100(-ViewWidth/2), \
100 mm2mils100(ViewHCtr - ViewHeight/2), \
101 mm2mils100(ViewWidth/2), \
102 mm2mils100(ViewHCtr - ViewHeight/2), \
106 print ' ElementLine[',\
107 mm2mils100(-ViewWidth/2), \
108 mm2mils100(ViewHCtr - ViewHeight/2), \
109 mm2mils100(-ViewWidth/2), \
110 mm2mils100(ViewHCtr + ViewHeight/2), \
114 print ' ElementLine[',\
115 mm2mils100(ViewWidth/2), \
116 mm2mils100(ViewHCtr - ViewHeight/2), \
117 mm2mils100(ViewWidth/2), \
118 mm2mils100(ViewHCtr + ViewHeight/2), \
122 print ' ElementLine[',\
123 mm2mils100(ViewWidth/2), \
124 mm2mils100(ViewHCtr - ViewHeight/2), \
125 mm2mils100(-ViewWidth/2), \
126 mm2mils100(ViewHCtr + ViewHeight/2), \
130 print ' ElementLine[',\
131 mm2mils100(-ViewWidth/2), \
132 mm2mils100(ViewHCtr - ViewHeight/2), \
133 mm2mils100(ViewWidth/2), \
134 mm2mils100(ViewHCtr + ViewHeight/2), \
138 # holes for alignment pins
140 mm2mils100(MntWidth/2), \
141 mm2mils100(MntHeight/2), \
142 mm2mils100(MntDiam * 1.75), \
144 mm2mils100(MntDiam * 1.75) + 600, \
145 mm2mils100(MntDiam), \
146 '"G"', '"G"', '0x0001', ']'
149 mm2mils100(MntWidth/2), \
150 mm2mils100(-MntHeight/2), \
151 mm2mils100(MntDiam * 1.75), \
153 mm2mils100(MntDiam * 1.75) + 600, \
154 mm2mils100(MntDiam), \
155 '"G"', '"G"', '0x0001', ']'
158 mm2mils100(-MntWidth/2), \
159 mm2mils100(MntHeight/2), \
160 mm2mils100(MntDiam * 1.75), \
162 mm2mils100(MntDiam * 1.75) + 600, \
163 mm2mils100(MntDiam), \
164 '"G"', '"G"', '0x0001', ']'
167 mm2mils100(-MntWidth/2), \
168 mm2mils100(-MntHeight/2), \
169 mm2mils100(MntDiam * 1.75), \
171 mm2mils100(MntDiam * 1.75) + 600, \
172 mm2mils100(MntDiam), \
173 '"G"', '"G"', '0x0001', ']'
177 mm2mils100(-BLWidth/2), \
178 mm2mils100(-BodyHeight/2+BLOffset), \
179 mm2mils100(BLDiam * 1.75), \
181 mm2mils100(BLDiam * 1.75) + 600, \
182 mm2mils100(BLDiam), \
183 '"K"', '"K"', '0x0001', ']'
186 mm2mils100(BLWidth/2), \
187 mm2mils100(-BodyHeight/2+BLOffset), \
188 mm2mils100(BLDiam * 1.75), \
190 mm2mils100(BLDiam * 1.75) + 600, \
191 mm2mils100(BLDiam), \
192 '"A"', '"A"', '0x0001', ']'