# SMC3 Serial Output

The SMC3 Serial output sends actuator positions to an **SMC3**-based motion controller over a serial connection. SMC3 is a popular open-source, Arduino-based motor controller commonly used in DIY 2- and 3-axis motion simulators. It typically drives DC motors via an H-bridge or BTS7960 motor driver board.

---

## Setup Steps

1. Connect your SMC3 Arduino to your PC via USB.
2. Install Arduino drivers if Windows does not recognize the device (see [Serial Output Not Working](../frequently-asked-questions/serial-output-not-working.md) for driver help).
3. In DR Sim Manager, go to the **Outputs** tab and click the **+** tab.
4. Select **SMC3 Serial Output** from the list.
5. Select your COM port from the dropdown (click **Refresh** if it's not listed).
6. Set the **Position Bits** to match your SMC3 firmware configuration (10-bit for most builds).
7. Map each axis (A, B, C) to the appropriate sim component actuator.
8. The output connects automatically once a valid COM port is selected.

---

## Settings

### Serial Port

Select the COM port that your SMC3 controller is connected to from the dropdown. Click **Refresh** to rescan for available ports if you connected the controller after opening DR Sim Manager.

The connection uses a **fixed baud rate of 500,000** and a **fixed output rate of 10 ms** (100 Hz). These values are not configurable — they are set to match the SMC3 firmware's expected communication parameters.

### Position Bits

Choose the position resolution for the actuator values sent to your controller:

- **10-bit** (default) — Values range from 0–1023. This is the standard setting for most SMC3 builds.
- **12-bit** — Values range from 0–4095. Use this if your SMC3 firmware has been configured for higher-resolution positioning.

> **caution**
The position bits setting in DR Sim Manager **must match** what your SMC3 firmware expects. If they don't match, the actuators will move to incorrect positions or behave erratically. Check your Arduino sketch to confirm which resolution your firmware uses.

---

## Axis Mapping

The SMC3 controller uses three fixed axes: **A**, **B**, and **C**. For each axis, you can configure:

- **Device** — Select the sim component (e.g., your seat mover or platform)
- **Actuator** — Select which actuator output to send on this channel

You do not need to map all three axes. Unmapped axes are skipped — no data is sent for them.

---

## Connection Behavior

When DR Sim Manager connects to the SMC3 controller, it automatically sends a motor enable command to activate the motors. This happens each time the connection is established.

---

## Troubleshooting

### Actuators not responding

1. **Check the COM port** — Confirm the correct port is selected. Open **Device Manager > Ports (COM & LPT)** to verify.
2. **Check position bits** — Ensure the position bits setting matches your firmware. A mismatch will cause garbled positioning data.
3. **Check axis mapping** — Make sure at least one axis has both a Device and Actuator selected. Unmapped axes are not sent.
4. **Check USB connection** — Use a data-capable USB cable (not a charge-only cable). Try a different USB port.

### Actuators jitter or move to wrong positions

- This usually indicates a **position bits mismatch**. If your firmware uses 10-bit values but DR Sim Manager is set to 12-bit (or vice versa), positions will be incorrect.

### COM port not listed

- Click **Refresh** to rescan.
- Check **Device Manager** to see if Windows recognizes the device.
- Install the appropriate USB driver (CH340 or FTDI, depending on your Arduino board). See [Serial Output Not Working](../frequently-asked-questions/serial-output-not-working.md).

### COM port "Access Denied"

- Another application is using the port. Close the Arduino IDE Serial Monitor or any other serial terminal, then try again.
