2 # Copyright 2022 by Keith Packard <keithp@keithp.com>. GPLv3
4 # Program to emit PCB footprint for NHD-C12864LZ-FSW-FBW-3V3 graphic LCD
7 # dimensions in mm from NHD_C12864LZ-FSW-FBW-3V3.pdf datasheet
18 ViewHCtr = BodyHeight / 2 - (33.24 / 2 + 6.08)
20 # centered pair of holes for alignment pins
25 # contacts for LED backlight
27 BLDiam = 1.9 # a 1.9 x 1.0 slot is called for
32 # we're going to use the 1/100 of a mil fundamental unit form
34 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
36 print('# author: Keith Packard')
37 print('# email: keithp@keithp.com')
38 print('# dist-license: GPL 3')
39 print('# use-license: unlimited')
41 print('Element[0x0 "NHD-C12864LZ" "" "" 0 0 0 0 0 100 0x0]')
45 # pin( x y thickness clearance mask drillhole name number flags)
46 for pin in range (0,Pins):
53 mm2mils100((13.5 - pin)*PinSpacing), \
54 mm2mils100(-BodyHeight/2+PinOffset), \
55 mm2mils100(RingDiam), \
57 mm2mils100(RingDiam) + 500, \
58 mm2mils100(PinDiam), \
59 '"pin%i"' % (Pins-pin), '"%i"' % (Pins-pin), Flags, ']')
61 print(' ElementLine[',\
62 -mm2mils100(BodyWidth/2), \
63 -mm2mils100(BodyHeight/2), \
64 mm2mils100(BodyWidth/2), \
65 -mm2mils100(BodyHeight/2), \
68 print(' ElementLine[',\
69 -mm2mils100(BodyWidth/2), \
70 -mm2mils100(BodyHeight/2), \
71 -mm2mils100(BodyWidth/2), \
72 mm2mils100(BodyHeight/2), \
75 print(' ElementLine[',\
76 -mm2mils100(BodyWidth/2), \
77 mm2mils100(BodyHeight/2), \
78 mm2mils100(BodyWidth/2), \
79 mm2mils100(BodyHeight/2), \
82 print(' ElementLine[',\
83 mm2mils100(BodyWidth/2), \
84 mm2mils100(BodyHeight/2), \
85 mm2mils100(BodyWidth/2), \
86 -mm2mils100(BodyHeight/2), \
92 print(' ElementLine[',\
93 mm2mils100(-ViewWidth/2), \
94 mm2mils100(ViewHCtr + ViewHeight/2), \
95 mm2mils100(ViewWidth/2), \
96 mm2mils100(ViewHCtr + ViewHeight/2), \
100 print(' ElementLine[',\
101 mm2mils100(-ViewWidth/2), \
102 mm2mils100(ViewHCtr - ViewHeight/2), \
103 mm2mils100(ViewWidth/2), \
104 mm2mils100(ViewHCtr - ViewHeight/2), \
108 print(' ElementLine[',\
109 mm2mils100(-ViewWidth/2), \
110 mm2mils100(ViewHCtr - ViewHeight/2), \
111 mm2mils100(-ViewWidth/2), \
112 mm2mils100(ViewHCtr + ViewHeight/2), \
116 print(' ElementLine[',\
117 mm2mils100(ViewWidth/2), \
118 mm2mils100(ViewHCtr - ViewHeight/2), \
119 mm2mils100(ViewWidth/2), \
120 mm2mils100(ViewHCtr + ViewHeight/2), \
124 print(' ElementLine[',\
125 mm2mils100(ViewWidth/2), \
126 mm2mils100(ViewHCtr - ViewHeight/2), \
127 mm2mils100(-ViewWidth/2), \
128 mm2mils100(ViewHCtr + ViewHeight/2), \
132 print(' ElementLine[',\
133 mm2mils100(-ViewWidth/2), \
134 mm2mils100(ViewHCtr - ViewHeight/2), \
135 mm2mils100(ViewWidth/2), \
136 mm2mils100(ViewHCtr + ViewHeight/2), \
140 # holes for alignment pins
142 mm2mils100(MntWidth/2), \
143 mm2mils100(-BodyHeight / 2 + MntOffset), \
144 mm2mils100(MntDiam * 1.75), \
146 mm2mils100(MntDiam * 1.75) + 600, \
147 mm2mils100(MntDiam), \
148 '"G"', '"G"', '0x0001', ']')
151 mm2mils100(-MntWidth/2), \
152 mm2mils100(-BodyHeight / 2 + MntOffset), \
153 mm2mils100(MntDiam * 1.75), \
155 mm2mils100(MntDiam * 1.75) + 600, \
156 mm2mils100(MntDiam), \
157 '"G"', '"G"', '0x0001', ']')
161 mm2mils100(-BLWidth/2), \
162 mm2mils100(-BodyHeight/2+BLOffset), \
163 mm2mils100(BLDiam * 1.75), \
165 mm2mils100(BLDiam * 1.75) + 600, \
166 mm2mils100(BLDiam), \
167 '"K"', '"K"', '0x0001', ']')
170 mm2mils100(BLWidth/2), \
171 mm2mils100(-BodyHeight/2+BLOffset), \
172 mm2mils100(BLDiam * 1.75), \
174 mm2mils100(BLDiam * 1.75) + 600, \
175 mm2mils100(BLDiam), \
176 '"A"', '"A"', '0x0001', ']')