2 # Copyright 2010 by Bdale Garbee <bdale@gag.com>. GPLv2
4 # Program to emit PCB footprint for NHD-C0216CU-FN-GBW-3V 2x16 text LCD
7 # dimensions in mm from Newhaven Display International datasheet
10 PinDiam = 0.72 # 0.50 +- 0.5 x 0.30 +- 0.05 rectangular pins
11 # worst case 0.66mm diagonal, plus some slack
16 ViewHCtr = (BodyHeight/2) - (18.30 / 2)
20 # we're going to use the 1/100 of a mil fundamental unit form
22 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
24 print '# author: Bdale Garbee'
25 print '# email: bdale@gag.com'
26 print '# dist-license: GPL 2'
27 print '# use-license: unlimited'
29 print 'Element[0x0 "NHD-C0216" "" "" 0 0 0 0 0 100 0x0]'
33 # pin( x y thickness clearance mask drillhole name number flags)
34 for pin in range (1,Pins+1):
41 mm2mils100((pin - 9)*PinSpacing), \
42 mm2mils100(-BodyHeight/2), \
43 mm2mils100(PinDiam * 1.75), \
45 mm2mils100(PinDiam * 1.75) + 600, \
46 mm2mils100(PinDiam), \
47 '"pin%i"' % (pin), '"%i"' % (pin), Flags, ']'
49 print ' ElementLine[',\
50 -mm2mils100(BodyWidth/2), \
51 -mm2mils100(BodyHeight/2), \
52 mm2mils100(BodyWidth/2), \
53 -mm2mils100(BodyHeight/2), \
56 print ' ElementLine[',\
57 -mm2mils100(BodyWidth/2), \
58 -mm2mils100(BodyHeight/2), \
59 -mm2mils100(BodyWidth/2), \
60 mm2mils100(BodyHeight/2), \
63 print ' ElementLine[',\
64 -mm2mils100(BodyWidth/2), \
65 mm2mils100(BodyHeight/2), \
66 mm2mils100(BodyWidth/2), \
67 mm2mils100(BodyHeight/2), \
70 print ' ElementLine[',\
71 mm2mils100(BodyWidth/2), \
72 mm2mils100(BodyHeight/2), \
73 mm2mils100(BodyWidth/2), \
74 -mm2mils100(BodyHeight/2), \
81 # ViewHCtr = BodyHeight - (18.30 / 2)
83 print ' ElementLine[',\
84 mm2mils100(-ViewWidth/2), \
85 mm2mils100(ViewHCtr + ViewHeight/2), \
86 mm2mils100(ViewWidth/2), \
87 mm2mils100(ViewHCtr + ViewHeight/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), \