mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 22:04:56 +00:00
129 lines
4.1 KiB
Python
129 lines
4.1 KiB
Python
from .Board import Board, TOP_SILK, BOTTOM_SILK
|
|
|
|
|
|
def create_voltage_divider():
|
|
"""Return a board with a simple voltage divider (two resistors)."""
|
|
board = Board(width=7, height=5)
|
|
board.set_layer_stack(["GTL", "GBL", TOP_SILK, BOTTOM_SILK])
|
|
|
|
vin = board.add_component("VIN", ref="J1", at=(0.5, 2.5))
|
|
vin.add_pin("VCC", dx=0, dy=0)
|
|
vin.add_pin("GND", dx=0, dy=-1)
|
|
vin.add_pad("VCC", dx=0, dy=0, w=1, h=1)
|
|
vin.add_pad("GND", dx=0, dy=-1, w=1, h=1)
|
|
|
|
r1 = board.add_component("RES", ref="R1", at=(2.5, 2.5))
|
|
r1.add_pin("A", dx=-0.5, dy=0)
|
|
r1.add_pin("B", dx=0.5, dy=0)
|
|
r1.add_pad("A", dx=-0.5, dy=0, w=1, h=1)
|
|
r1.add_pad("B", dx=0.5, dy=0, w=1, h=1)
|
|
|
|
r2 = board.add_component("RES", ref="R2", at=(4.7, 2.5))
|
|
r2.add_pin("A", dx=-0.5, dy=0)
|
|
r2.add_pin("B", dx=0.5, dy=0)
|
|
r2.add_pad("A", dx=-0.5, dy=0, w=1, h=1)
|
|
r2.add_pad("B", dx=0.5, dy=0, w=1, h=1)
|
|
|
|
vout = board.add_component("VOUT", ref="J2", at=(6.4, 2.5))
|
|
vout.add_pin("OUT", dx=0, dy=0)
|
|
vout.add_pad("OUT", dx=0, dy=0, w=1, h=1)
|
|
|
|
board.trace(vin.pin("VCC"), r1.pin("A"))
|
|
board.trace(r1.pin("B"), r2.pin("A"))
|
|
board.trace(r2.pin("B"), vout.pin("OUT"))
|
|
board.trace(r2.pin("B"), vin.pin("GND"))
|
|
|
|
return board
|
|
|
|
|
|
def create_led_indicator():
|
|
"""Return a board with a battery, resistor and LED."""
|
|
board = Board(width=7, height=5)
|
|
board.set_layer_stack(["GTL", "GBL", TOP_SILK, BOTTOM_SILK])
|
|
|
|
bat = board.add_component("BAT", ref="BT1", at=(0.5, 2))
|
|
bat.add_pin("VCC", dx=0, dy=0)
|
|
bat.add_pin("GND", dx=0, dy=-1)
|
|
bat.add_pad("VCC", dx=0, dy=0, w=1, h=1)
|
|
bat.add_pad("GND", dx=0, dy=-1, w=1, h=1)
|
|
|
|
r = board.add_component("RES", ref="R1", at=(2.5, 2))
|
|
r.add_pin("A", dx=-0.5, dy=0)
|
|
r.add_pin("B", dx=0.5, dy=0)
|
|
r.add_pad("A", dx=-0.5, dy=0, w=1, h=1)
|
|
r.add_pad("B", dx=0.5, dy=0, w=1, h=1)
|
|
|
|
led = board.add_component("LED", ref="D1", at=(4.7, 2))
|
|
led.add_pin("A", dx=-0.5, dy=0)
|
|
led.add_pin("K", dx=0.5, dy=0)
|
|
led.add_pad("A", dx=-0.5, dy=0, w=1, h=1)
|
|
led.add_pad("K", dx=0.5, dy=0, w=1, h=1)
|
|
|
|
board.trace(bat.pin("VCC"), r.pin("A"))
|
|
board.trace(r.pin("B"), led.pin("A"))
|
|
board.trace(led.pin("K"), bat.pin("GND"))
|
|
|
|
return board
|
|
|
|
|
|
def create_rc_lowpass():
|
|
"""Return a board with a resistor and capacitor configured as a low-pass filter."""
|
|
board = Board(width=7, height=5)
|
|
board.set_layer_stack(["GTL", "GBL", TOP_SILK, BOTTOM_SILK])
|
|
|
|
j1 = board.add_component("IN", ref="J1", at=(0.5, 2.5))
|
|
j1.add_pin("VIN", dx=0, dy=0)
|
|
j1.add_pin("GND", dx=0, dy=-1)
|
|
j1.add_pad("VIN", dx=0, dy=0, w=1, h=1)
|
|
j1.add_pad("GND", dx=0, dy=-1, w=1, h=1)
|
|
|
|
r = board.add_component("RES", ref="R1", at=(2.5, 2.5))
|
|
r.add_pin("A", dx=-0.5, dy=0)
|
|
r.add_pin("B", dx=0.5, dy=0)
|
|
r.add_pad("A", dx=-0.5, dy=0, w=1, h=1)
|
|
r.add_pad("B", dx=0.5, dy=0, w=1, h=1)
|
|
|
|
c = board.add_component("CAP", ref="C1", at=(4.8, 2.5))
|
|
c.add_pin("A", dx=0, dy=0)
|
|
c.add_pin("B", dx=0, dy=-1)
|
|
c.add_pad("A", dx=0, dy=0, w=1, h=1)
|
|
c.add_pad("B", dx=0, dy=-1, w=1, h=1)
|
|
|
|
j2 = board.add_component("OUT", ref="J2", at=(6.3, 2.5))
|
|
j2.add_pin("VOUT", dx=0, dy=0)
|
|
j2.add_pad("VOUT", dx=0, dy=0, w=1, h=1)
|
|
|
|
board.trace(j1.pin("VIN"), r.pin("A"))
|
|
board.trace(r.pin("B"), j2.pin("VOUT"))
|
|
board.trace(r.pin("B"), c.pin("A"))
|
|
board.trace(c.pin("B"), j1.pin("GND"))
|
|
|
|
return board
|
|
|
|
|
|
def create_bent_trace(path=None):
|
|
"""Return a board demonstrating a trace with a bend.
|
|
|
|
Parameters
|
|
----------
|
|
path : list, optional
|
|
Sequence of coordinates or Pin objects representing the trace path.
|
|
If omitted, a default 90-degree bend is used.
|
|
"""
|
|
board = Board(width=5, height=5)
|
|
board.set_layer_stack(["GTL", "GBL", TOP_SILK, BOTTOM_SILK])
|
|
|
|
j1 = board.add_component("IN", ref="J1", at=(0.5, 2.5))
|
|
j1.add_pin("SIG", dx=0, dy=0)
|
|
j1.add_pad("SIG", dx=0, dy=0, w=1, h=1)
|
|
|
|
j2 = board.add_component("OUT", ref="J2", at=(4.5, 2.5))
|
|
j2.add_pin("SIG", dx=0, dy=0)
|
|
j2.add_pad("SIG", dx=0, dy=0, w=1, h=1)
|
|
|
|
if path is None:
|
|
path = [j1.pin("SIG"), (2.5, 4.0), j2.pin("SIG")]
|
|
board.trace_path(path)
|
|
|
|
return board
|