{ "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 }