Quick Start
===========
This guide will get you up and running with Circuit-Synth in just a few minutes!
.. note::
**New to Circuit-Synth?** This page shows you how to create your first circuit in under 5 minutes.
For more complex examples, see our :doc:`examples` page.
Basic LED Circuit Example
-------------------------
Let's start with a simple LED circuit that demonstrates the core concepts:
.. raw:: html
3.3V ──┬── R1 (330Ω) ──┬── D1 (LED) ── GND
│ │
└── Power Input └── Current Limiting
Here's how to implement this circuit in Circuit-Synth:
.. code-block:: python
from circuit_synth import Circuit, Component, Net, circuit
@circuit(name="simple_led")
def simple_led():
"""
Simple LED circuit with current limiting resistor.
Perfect for getting started with Circuit-Synth!
"""
# Create power nets
VCC_3V3 = Net('VCC_3V3')
GND = Net('GND')
# Create LED component
led = Component(
symbol="Device:LED",
ref="D",
value="Red",
footprint="LED_SMD:LED_0603_1608Metric"
)
# Create current limiting resistor
resistor = Component(
symbol="Device:R",
ref="R",
value="330",
footprint="Resistor_SMD:R_0603_1608Metric"
)
# Make connections
VCC_3V3 += resistor[1] # Power to resistor
resistor[2] += led[1] # Resistor to LED anode
led[2] += GND # LED cathode to ground
# Generate KiCad files
if __name__ == '__main__':
circuit = simple_led()
circuit.generate_kicad_project("my_first_circuit")
print("Circuit generated! Check the 'my_first_circuit' folder.")
Core Concepts
-------------
Components
~~~~~~~~~~
Components are the building blocks of your circuits. Each component needs four key properties:
.. raw:: html
Component Structure:
symbol: KiCad library symbol
ref: Reference prefix (R, C, U, etc.)
value: Component value/name
footprint: Physical package for PCB
.. code-block:: python
# Standard 10kΩ resistor (0603 package)
resistor = Component(
symbol="Device:R", # KiCad symbol
ref="R", # Reference prefix
value="10K", # Resistance value
footprint="Resistor_SMD:R_0603_1608Metric" # Physical footprint
)
Nets
~~~~
Nets represent electrical connections (wires) between components:
.. raw:: html
Tip: Use descriptive net names like 'VCC_3V3' instead of 'Net1'
.. code-block:: python
# Power and ground nets
VCC_3V3 = Net('VCC_3V3') # 3.3V power supply
VCC_5V = Net('VCC_5V') # 5V power supply
GND = Net('GND') # Ground reference
# Signal nets
SPI_MOSI = Net('SPI_MOSI') # SPI data line
USB_DP = Net('USB_DP') # USB D+ signal
Circuits
~~~~~~~~
Use the ``@circuit`` decorator to define circuit functions:
.. code-block:: python
@circuit
def my_circuit():
# Define your circuit here
pass
Pin Connections
~~~~~~~~~~~~~~~
Connect component pins to nets using indexing:
.. code-block:: python
# Connect pin 1 of resistor to power net
resistor[1] += power_net
# Connect pin 2 of resistor to signal net
resistor[2] += signal_net
Hierarchical Design
-------------------
Circuit-Synth excels at building complex systems from reusable building blocks:
.. tip::
**Professional Practice:** Keep one circuit per file for better organization and reusability.
.. code-block:: python
# power_supply.py - Reusable 3.3V regulator
@circuit(name="ldo_3v3")
def ldo_3v3_regulator(vin, vout, gnd):
"""3.3V linear regulator with decoupling caps"""
regulator = Component("Regulator_Linear:AMS1117-3.3", ref="U")
# ... implementation details
# led_indicators.py - Reusable LED circuit
@circuit(name="status_led")
def status_led(vcc, gnd, control_signal):
"""LED with current limiting resistor"""
# ... implementation details
# main_board.py - Complete system
@circuit(name="esp32_dev_board")
def esp32_development_board():
"""Complete ESP32 board with power and LEDs"""
VIN_5V = Net('VIN_5V')
VCC_3V3 = Net('VCC_3V3')
GND = Net('GND')
# Compose subsystems
ldo_3v3_regulator(VIN_5V, VCC_3V3, GND) # Power supply
status_led(VCC_3V3, GND, esp32_gpio) # Status indicator
# ... ESP32 and other circuits
.. raw:: html
Hierarchical Project Structure:
├── components.py # Reusable parts library
├── power_supply.py # Voltage regulators
├── led_indicators.py # Status LEDs
└── main_board.py # System integration
Next Steps
----------
Ready to dive deeper? Here's your learning path:
.. raw:: html
**What to explore next:**
* :doc:`examples` - Complete ESP32, STM32, and power supply projects
* :doc:`api` - Comprehensive API documentation and advanced features
* :doc:`contributing` - Help make Circuit-Synth even better
* **GitHub Issues** - Report bugs or request features
.. note::
**Stuck?** Join our community discussions or file an issue on GitHub.
We're here to help you succeed with Circuit-Synth!