convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / dualbeeper.py
1 #!/usr/bin/python3
2 # Copyright 2022 by Bdale Garbee <bdale@gag.com>.  GPLv3
3 #
4 # Program to emit PCB footprint for TDK PS-12 or PUI Audio AT-1220 beeper
5 #
6
7 import math
8
9 # dimensions in mm from puiaudio/AT-1220-TT-11-R.pdf datasheet
10 BodyDiam = 12.2
11
12 PinSpacingPUI = 6.5
13 PinDiamPUI = 0.6
14
15 PinSpacingTDK = 5.0
16 PinDiamTDK = 0.7
17 Angle = math.pi / 10
18
19 # we're going to use the 1/100 of a mil fundamental unit form
20 def mm2mils100( mm ):
21         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
22
23 print('# author: Bdale Garbee')
24 print('# email: bdale@gag.com')
25 print('# dist-license: GPL 3')
26 print('# use-license: unlimited')
27
28 print('Element[0x0 "AT-1220" "" "" 0 0 0 0 0 100 0x0]')
29 print("(")
30 print('   Pin[',\
31         mm2mils100(-PinSpacingPUI/2), \
32         0, \
33         mm2mils100(PinDiamPUI * 2.5), \
34         1200, \
35         mm2mils100(PinDiamPUI * 2.5), \
36         mm2mils100(PinDiamPUI), \
37         '"pin1" "1" 0x0001]')
38
39 print('   Pin[',\
40         mm2mils100(-PinSpacingTDK/2 * math.cos(Angle)), \
41         mm2mils100(-PinSpacingTDK/2 * math.sin(Angle)), \
42         mm2mils100(PinDiamTDK * 2.5), \
43         1200, \
44         mm2mils100(PinDiamTDK * 2.5), \
45         mm2mils100(PinDiamTDK), \
46         '"pin1" "1" 0x0001]')
47
48 print('   Pin[',\
49         mm2mils100(PinSpacingPUI/2), \
50         0, \
51         mm2mils100(PinDiamPUI * 2.5), \
52         1200, \
53         mm2mils100(PinDiamPUI * 2.5), \
54         mm2mils100(PinDiamPUI), \
55         '"pin2" "2" 0x0001]')
56
57 print('   Pin[',\
58         mm2mils100(PinSpacingTDK/2 * math.cos(Angle)), \
59         mm2mils100(PinSpacingTDK/2 * math.sin(Angle)), \
60         mm2mils100(PinDiamTDK * 2.5), \
61         1200, \
62         mm2mils100(PinDiamTDK * 2.5), \
63         mm2mils100(PinDiamTDK), \
64         '"pin2" "2" 0x0001]')
65
66 print('   ElementArc[',\
67         0, \
68         0, \
69         mm2mils100(BodyDiam/2), \
70         mm2mils100(BodyDiam/2), \
71         0, \
72         360, \
73         1000, \
74         ']')
75
76 print('   ElementLine[',\
77         mm2mils100(-3*BodyDiam/8), \
78         mm2mils100(-BodyDiam/4), \
79         mm2mils100(-BodyDiam/8), \
80         mm2mils100(-BodyDiam/4), \
81         1000, \
82         ']')
83
84 print('   ElementLine[',\
85         mm2mils100(3*BodyDiam/8), \
86         mm2mils100(-BodyDiam/4), \
87         mm2mils100(BodyDiam/8), \
88         mm2mils100(-BodyDiam/4), \
89         1000, \
90         ']')
91
92 print('   ElementLine[',\
93         mm2mils100(BodyDiam/4), \
94         mm2mils100(-3*BodyDiam/8), \
95         mm2mils100(BodyDiam/4), \
96         mm2mils100(-1*BodyDiam/8), \
97         1000, \
98         ']')
99
100 print(")")