Skip to content

Examples

Each example is a small firmware project with its own main/, CMakeLists.txt, and environment wrappers. Build one example at a time while learning so the logs stay short and the hardware path is obvious.

Use this pattern for ESP32-S3 examples:

sh
cd examples/esp32s3/udp
. ./env.sh
idf.py build
idf.py -p /dev/ttyACM0 flash monitor

Use the matching source ./env.fish form if your shell is fish. Run ./tools/arc-projects.py --buildable --format report from the repository root when you want the discovered project list grouped with target, experiment status, and build command.

ESP32-S3 Examples

ExampleWhat it teaches
examples/esp32s3/benchReal ESP32-S3 benchmark firmware with Arc, raw ESP-IDF, and optional Arduino-ESP32 surfaces in one run.
examples/esp32s3/bridgeComplementary MCPWM outputs, dead-time, and a small app::boot() surface.
examples/esp32s3/canTWAI/CAN self-test loopback without an external CAN transceiver.
examples/esp32s3/copyDMA memcpy, coherent cache handoff, and exact completion tickets.
examples/esp32s3/countRMT pulse output feeding PCNT pulse counting through a jumper.
examples/esp32s3/dspSIMD-capable buffers, DSP kernels, Core 1 compute, and snapshot reporting.
examples/esp32s3/dvpLCD_CAM DVP camera-capture skeleton.
examples/esp32s3/espnowESP-NOW raw radio transport with the same Core 0/Core 1 shape as UDP.
examples/esp32s3/i2cI2C master bus/device ownership.
examples/esp32s3/i2sDuplex I2S DMA movement and arc::Result<std::size_t> read/write paths.
examples/esp32s3/i80LCD_CAM Intel 8080 DMA display/peripheral output.
examples/esp32s3/net_clientTCP/TLS/HTTP-style client-side network building blocks.
examples/esp32s3/otaOTA slot inspection, image state, and flash capacity reporting.
examples/esp32s3/probeCycle-counter measurement, min/avg/max stats, and Core 1 reporting.
examples/esp32s3/pulseMCPWM waveform generation plus MCPWM capture timing.
examples/esp32s3/pwmLEDC hardware PWM without a pinned task or busy loop.
examples/esp32s3/scopeADC continuous DMA capture and parsed sample frames.
examples/esp32s3/sigmaSigma-Delta pulse-density output.
examples/esp32s3/sleepRTC-retained boot counter, wake causes, and deep sleep.
examples/esp32s3/spaceRuntime flash, partition, image, and heap capacity reports.
examples/esp32s3/spiSPI DMA loopback with coherent queue and finish.
examples/esp32s3/storeTyped NVS config, fixed text storage, and capacity reporting.
examples/esp32s3/tempInternal die-temperature telemetry.
examples/esp32s3/timerGPTimer alarm ISR and free-running counter logging.
examples/esp32s3/traceRMT transmit/capture loopback for symbol timing.
examples/esp32s3/uartUART ownership and byte movement.
examples/esp32s3/udpThe first full transport example: Core 1 work plus Core 0 Wi-Fi/UDP.

Portable Example

ExampleWhat it teaches
examples/portable/packFixed binary arc::pack records outside a full ESP32-S3 firmware build.

Experimental ESP32-S31 Scaffolds

These projects are present so the intended API shape is visible, but they stay gated behind ARC_TARGET=esp32s31 and ARC_EXPERIMENTAL_ESP32S31=ON until a usable ESP32-S31 ESP-IDF target exists in the pinned SDK.

ExampleIntended surface
examples/esp32s31/ampAMP-style split-core policy scaffolding.
examples/esp32s31/camCamera/data-path scaffolding.
examples/esp32s31/controlControl-loop scaffolding.
examples/esp32s31/mlFixed-shape ML scaffolding.
examples/esp32s31/ptpPrecision-time scaffolding.

Reading Order

  1. Build examples/esp32s3/udp if you want the complete Arc shape.
  2. Build the smallest hardware example near your peripheral.
  3. Open Module Guide to find the matching header.
  4. Open API Reference for exact methods and failure behavior.

ESP32-S3 first. ESP-IDF native. Static ownership by default.