2 # Copyright 2022 by Bdale Garbee <bdale@gag.com>. GPLv3
4 # Program to emit PCB footprint for NHD-C12832A1Z-FSW-FBW-3V3 graphic LCD
7 # dimensions in mm from NHD-C12832A1Z-FSW-FBW-3V3.pdf datasheet
17 ViewHCtr = 15.8 / 2 + 7.6 - BodyHeight / 2
19 # centered rectangle of holes for alignment pins
24 # contacts for LED backlight
26 BLDiam = 1.25 # a 1.2 x 0.7 slot is called for
27 BLOffset = PinOffset + 1.69 + BLDiam / 2
31 # we're going to use the 1/100 of a mil fundamental unit form
33 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
35 print('# author: Bdale Garbee')
36 print('# email: bdale@gag.com')
37 print('# dist-license: GPL 3')
38 print('# use-license: unlimited')
40 print('Element[0x0 "NHD-C12832A1Z" "" "" 0 0 0 0 0 100 0x0]')
44 # pin( x y thickness clearance mask drillhole name number flags)
45 for pin in range (0,Pins):
52 mm2mils100((pin - 8)*PinSpacing), \
53 mm2mils100(-BodyHeight/2+PinOffset), \
54 mm2mils100(PinDiam * 1.75), \
56 mm2mils100(PinDiam * 1.75) + 600, \
57 mm2mils100(PinDiam), \
58 '"pin%i"' % (Pins-pin), '"%i"' % (Pins-pin), Flags, ']')
60 print(' ElementLine[',\
61 -mm2mils100(BodyWidth/2), \
62 -mm2mils100(BodyHeight/2), \
63 mm2mils100(BodyWidth/2), \
64 -mm2mils100(BodyHeight/2), \
67 print(' ElementLine[',\
68 -mm2mils100(BodyWidth/2), \
69 -mm2mils100(BodyHeight/2), \
70 -mm2mils100(BodyWidth/2), \
71 mm2mils100(BodyHeight/2), \
74 print(' ElementLine[',\
75 -mm2mils100(BodyWidth/2), \
76 mm2mils100(BodyHeight/2), \
77 mm2mils100(BodyWidth/2), \
78 mm2mils100(BodyHeight/2), \
81 print(' ElementLine[',\
82 mm2mils100(BodyWidth/2), \
83 mm2mils100(BodyHeight/2), \
84 mm2mils100(BodyWidth/2), \
85 -mm2mils100(BodyHeight/2), \
91 print(' ElementLine[',\
92 mm2mils100(-ViewWidth/2), \
93 mm2mils100(ViewHCtr + ViewHeight/2), \
94 mm2mils100(ViewWidth/2), \
95 mm2mils100(ViewHCtr + ViewHeight/2), \
99 print(' ElementLine[',\
100 mm2mils100(-ViewWidth/2), \
101 mm2mils100(ViewHCtr - ViewHeight/2), \
102 mm2mils100(ViewWidth/2), \
103 mm2mils100(ViewHCtr - ViewHeight/2), \
107 print(' ElementLine[',\
108 mm2mils100(-ViewWidth/2), \
109 mm2mils100(ViewHCtr - ViewHeight/2), \
110 mm2mils100(-ViewWidth/2), \
111 mm2mils100(ViewHCtr + ViewHeight/2), \
115 print(' ElementLine[',\
116 mm2mils100(ViewWidth/2), \
117 mm2mils100(ViewHCtr - ViewHeight/2), \
118 mm2mils100(ViewWidth/2), \
119 mm2mils100(ViewHCtr + ViewHeight/2), \
123 print(' ElementLine[',\
124 mm2mils100(ViewWidth/2), \
125 mm2mils100(ViewHCtr - ViewHeight/2), \
126 mm2mils100(-ViewWidth/2), \
127 mm2mils100(ViewHCtr + ViewHeight/2), \
131 print(' ElementLine[',\
132 mm2mils100(-ViewWidth/2), \
133 mm2mils100(ViewHCtr - ViewHeight/2), \
134 mm2mils100(ViewWidth/2), \
135 mm2mils100(ViewHCtr + ViewHeight/2), \
139 # holes for alignment pins
141 mm2mils100(MntWidth/2), \
142 mm2mils100(MntHeight/2), \
143 mm2mils100(MntDiam * 1.75), \
145 mm2mils100(MntDiam * 1.75) + 600, \
146 mm2mils100(MntDiam), \
147 '"G"', '"G"', '0x0001', ']')
150 mm2mils100(MntWidth/2), \
151 mm2mils100(-MntHeight/2), \
152 mm2mils100(MntDiam * 1.75), \
154 mm2mils100(MntDiam * 1.75) + 600, \
155 mm2mils100(MntDiam), \
156 '"G"', '"G"', '0x0001', ']')
159 mm2mils100(-MntWidth/2), \
160 mm2mils100(MntHeight/2), \
161 mm2mils100(MntDiam * 1.75), \
163 mm2mils100(MntDiam * 1.75) + 600, \
164 mm2mils100(MntDiam), \
165 '"G"', '"G"', '0x0001', ']')
168 mm2mils100(-MntWidth/2), \
169 mm2mils100(-MntHeight/2), \
170 mm2mils100(MntDiam * 1.75), \
172 mm2mils100(MntDiam * 1.75) + 600, \
173 mm2mils100(MntDiam), \
174 '"G"', '"G"', '0x0001', ']')
178 mm2mils100(-BLWidth/2), \
179 mm2mils100(-BodyHeight/2+BLOffset), \
180 mm2mils100(BLDiam * 1.75), \
182 mm2mils100(BLDiam * 1.75) + 600, \
183 mm2mils100(BLDiam), \
184 '"K"', '"K"', '0x0001', ']')
187 mm2mils100(BLWidth/2), \
188 mm2mils100(-BodyHeight/2+BLOffset), \
189 mm2mils100(BLDiam * 1.75), \
191 mm2mils100(BLDiam * 1.75) + 600, \
192 mm2mils100(BLDiam), \
193 '"A"', '"A"', '0x0001', ']')