Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
{
"cells": [
{
"cell_type": "code",
"source": [
"# Change these values to calculate the needed values\n",
"requirements = {\"inputs\": 8, \"outputs\":8}\n",
"\n",
"\n",
"# Do not edit below this Point unless you know what you are doing\n",
"data = {\n",
" \"mami-input\": {\n",
" \"input-channels\": 2,\n",
" \"parts\": [\n",
" {\"MPN\": \"PJ301M-12\", \"n\": 2},\n",
" {\"MPN\": \"Subminiature On-Off-(On) Toggle switch\", \"n\": 2},\n",
" ]\n",
" },\n",
" \"mami-output\": {\n",
" \"output-channels\": 2,\n",
" \"parts\": [\n",
" {\"MPN\": \"LME49720\", \"n\": 2},\n",
" {\"MPN\": \"100nF 0605 25V\", \"n\": 4},\n",
" {\"MPN\": \"100k 0805\", \"n\": 8},\n",
" {\"MPN\": \"PJ301M-12\", \"n\": 2}\n",
" ]\n",
" },\n",
" \"mami-quad\": {\n",
" \"input-channels\":2, \"output-channels\":2,\n",
" \"parts\": [\n",
" {\"MPN\": \"P0915N-FC15BR100K\", \"n\": 4},\n",
" {\"MPN\": \"Knob\", \"n\": 4},\n",
" {\"MPN\": \"100k 0805\", \"n\": 4}\n",
" ]\n",
" }\n",
"}\n",
"\n",
"# Calculate how many PCBs are needed\n",
"n_input_modules = int(requirements[\"inputs\"] / data[\"mami-input\"][\"input-channels\"])\n",
"n_output_modules = int(requirements[\"outputs\"] / data[\"mami-output\"][\"output-channels\"])\n",
"n_quad_modules = int((requirements[\"inputs\"] * requirements[\"outputs\"]) / (data[\"mami-output\"][\"output-channels\"] * data[\"mami-input\"][\"input-channels\"]))\n",
"\n",
"\n",
"\n",
"Print the PCB\n",
"print(\"Needed for a {}x{} Matrix Mixer\".format(requirements[\"inputs\"], requirements[\"outputs\"]))\n",
"print(\"{}\".format(\"=\"*50))\n",
"print(\"{0:>5}x MAMI-INPUT-Module\".format(n_input_modules))\n",
"print(\"{0:>5}x MAMI-OUTPUT-Module\".format(n_output_modules))\n",
"print(\"{0:>5}x MAMI-QUAD-Module\\n\".format(n_quad_modules))\n",
"\n",
"# Collect all the parts\n",
"bom = {}\n",
"\n",
"for part in data[\"mami-input\"][\"parts\"]*n_input_modules + data[\"mami-quad\"][\"parts\"]*n_quad_modules + data[\"mami-output\"][\"parts\"]*n_output_modules:\n",
" if part[\"MPN\"] in bom:\n",
" bom[part[\"MPN\"]] += part[\"n\"]\n",
" else:\n",
" bom[part[\"MPN\"]] = part[\"n\"]\n",
"\n",
"# Print the BOM\n",
"print(\"Parts\\n{}\".format(\"=\"*50))\n",
"for key, value in bom.items():\n",
" print(\"{:>5}x {}\".format(value, key))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Needed for a 8x8 Matrix Mixer:\n",
"==================================================\n",
" 4x MAMI-INPUT-Module\n",
" 4x MAMI-OUTPUT-Module\n",
" 16x MAMI-QUAD-Module\n",
"\n",
"Parts\n",
"==================================================\n",
" 16x PJ301M-12\n",
" 8x Subminiature On-Off-(On) Toggle switch\n",
" 64x P0915N-FC15BR100K\n",
" 64x Knob\n",
" 96x 100k 0805\n",
" 8x LME49720\n",
" 16x 100nF 0605 25V\n"
]
}
],
"execution_count": 29,
"metadata": {
"collapsed": false,
"outputHidden": false,
"inputHidden": false
}
},
{
"cell_type": "code",
"source": [],
"outputs": [],
"execution_count": null,
"metadata": {
"collapsed": false,
"outputHidden": false,
"inputHidden": false
}
}
],
"metadata": {
"kernel_info": {
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.7.3",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"kernelspec": {
"name": "python3",
"language": "python",
"display_name": "Python 3"
},
"nteract": {
"version": "0.15.0"
}
},
"nbformat": 4,
"nbformat_minor": 0
}