ec02f7d9bf34b716b1988c5c186ed9085f1279b0
[hw/bdale] / pkg / newlib / NHD-LCD.py
1 #!/usr/bin/python
2 # Copyright 2010 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for NHD-0420H1Z-FL-GBW-3V3 4x20 text LCD
5 #
6
7 # dimensions in mm from Newhaven Display International datasheet
8 BodyWidth = 79.0
9 BodyHeight = 36.0
10 Column = 75.0
11 Row = 2.54
12 #PinDiam = 0.387
13 PinDiam = 0.4                   # give it a little clearance
14
15 import sys
16
17 # we're going to use the 1/100 of a mil fundamental unit form
18 def mm2mils100( mm ):
19         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
20
21 print '# author: Bdale Garbee'
22 print '# email: bdale@gag.com'
23 print '# dist-license: GPL 2'
24 print '# use-license: unlimited'
25
26 print 'Element[0x0 "NHD-LCD" "" "" 0 0 0 0 0 100 0x0]'
27 print "("
28
29 # pins
30         # pin( x y thickness clearance mask drillhole name number flags)
31 for pin in range (1,9):
32     if pin == 1:
33         Flags = '0x0101'
34     else:
35         Flags = '0x0001'
36
37     print '   Pin[',\
38         mm2mils100(-Column/2), \
39         mm2mils100((pin - 4) * Row - (Row/2)), \
40         mm2mils100(PinDiam * 3), \
41         1200, \
42         mm2mils100(PinDiam * 3) + 300, \
43         mm2mils100(PinDiam), \
44         '"pin%i"' % (pin), '"%i"' % (pin), Flags, ']'
45
46     print '   Pin[',\
47         mm2mils100(Column/2), \
48         mm2mils100((pin - 4) * Row - (Row/2)), \
49         mm2mils100(PinDiam * 3), \
50         1200, \
51         mm2mils100(PinDiam * 3) + 300, \
52         mm2mils100(PinDiam), \
53         '"pin%i"' % (8+pin), '"%i"' % (8+pin), '0x0001]'
54
55 print '   ElementLine[',\
56         -mm2mils100(BodyWidth/2), \
57         -mm2mils100(BodyHeight/2), \
58         mm2mils100(BodyWidth/2), \
59         -mm2mils100(BodyHeight/2), \
60         500, \
61         ']'
62 print '   ElementLine[',\
63         -mm2mils100(BodyWidth/2), \
64         -mm2mils100(BodyHeight/2), \
65         -mm2mils100(BodyWidth/2), \
66         mm2mils100(BodyHeight/2), \
67         500, \
68         ']'
69 print '   ElementLine[',\
70         -mm2mils100(BodyWidth/2), \
71         mm2mils100(BodyHeight/2), \
72         mm2mils100(BodyWidth/2), \
73         mm2mils100(BodyHeight/2), \
74         500, \
75         ']'
76 print '   ElementLine[',\
77         mm2mils100(BodyWidth/2), \
78         mm2mils100(BodyHeight/2), \
79         mm2mils100(BodyWidth/2), \
80         -mm2mils100(BodyHeight/2), \
81         500, \
82         ']'
83
84 print ")"