# enes-sen/arduino-virtual-duneweaver-test architecture

> Architecture diagram of the GitHub repository enes-sen/arduino-virtual-duneweaver-test, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/enes-sen/arduino-virtual-duneweaver-test
- Repository: https://github.com/enes-sen/arduino-virtual-duneweaver-test

## Overview

This is Arduino firmware for a DuneWeaver simulator: it accepts serial G0/G1 coordinate commands, interpolates Cartesian lines into polar motor positions, and drives two stepper axes. The main loop connects command listening and continued motor stepping. The README also identifies Wokwi virtual testing, but the sampled source does not show how the simulator is connected to the firmware, so that relationship is omitted.

Main entry points: [`DuneWeaverSimTester/DuneWeaverSim/src/MotorController.cpp`](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/MotorController.cpp) (Motor Controller), [`DuneWeaverSimTester/DuneWeaverSim/src/main.cpp`](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/main.cpp) (Arduino Loop), [`DuneWeaverSimTester/DuneWeaverSim/src/GCodeParser.cpp`](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/GCodeParser.cpp) (G-code Parser), [`DuneWeaverSimTester/DuneWeaverSim/src/Kinematics.cpp`](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/Kinematics.cpp) (Line Kinematics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_command["Command Input"]
  node_main["Arduino Loop<br/>[main.cpp]"]
  node_parser["G-code Parser<br/>[GCodeParser.cpp]"]
end

subgraph group_motion["Motion Planning"]
  node_kinematics["Line Kinematics<br/>[Kinematics.cpp]"]
end

subgraph group_actuation["Motor Control"]
  node_motors["Motor Controller"]
end

node_serial_user(("Serial Operator"))
node_accelstepper["AccelStepper"]

node_serial_user -->|"sends commands"| node_main
node_main -->|"listens serial"| node_parser
node_main -->|"runs axes"| node_motors
node_parser -->|"plans line"| node_kinematics
node_parser -->|"prints status"| node_serial_user
node_kinematics -->|"sets steps"| node_motors
node_kinematics -->|"runs motion"| node_motors
node_motors -->|"commands steppers"| node_accelstepper

click node_main "https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/main.cpp"
click node_parser "https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/GCodeParser.cpp"
click node_kinematics "https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/Kinematics.cpp"
click node_motors "https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/MotorController.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_parser toneBlue
class node_kinematics toneAmber
class node_motors toneMint
class node_serial_user,node_accelstepper toneIndigo
```

## Components

### Command Input

- [Arduino Loop](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/main.cpp): `DuneWeaverSimTester/DuneWeaverSim/src/main.cpp`
- [G-code Parser](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/GCodeParser.cpp): `DuneWeaverSimTester/DuneWeaverSim/src/GCodeParser.cpp`

### Motion Planning

- [Line Kinematics](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/Kinematics.cpp): `DuneWeaverSimTester/DuneWeaverSim/src/Kinematics.cpp`

### Motor Control

- [Motor Controller](https://github.com/enes-sen/arduino-virtual-duneweaver-test/blob/main/DuneWeaverSimTester/DuneWeaverSim/src/MotorController.cpp): `DuneWeaverSimTester/DuneWeaverSim/src/MotorController.cpp`

### Other components

- **Serial Operator**
- **AccelStepper**

## Connections

- Serial Operator → Arduino Loop: sends commands
- Arduino Loop → G-code Parser: listens serial
- Arduino Loop → Motor Controller: runs axes
- G-code Parser → Line Kinematics: plans line
- G-code Parser → Serial Operator: prints status
- Line Kinematics → Motor Controller: sets steps
- Line Kinematics → Motor Controller: runs motion
- Motor Controller → AccelStepper: commands steppers
