On-Module Code
Every DUELink module ships with firmware that responds to plain text commands from a host โ that's the default workflow, covered in Get Started. But the same on-board STM32 microcontroller can also run your own code, for projects that don't need a host or where you want full control of the hardware. Here are the ways to do it.

Quick guide: MicroBlocks for classrooms ยท Arduino IDE if you've used Arduino ยท C++ for full toolchain control. The internal scripting engine that powers the default firmware is also documented under Advanced for the power user.
In the classroom? Use MicroBlocksโ

For educators and first-time coders, MicroBlocks is the easiest path โ block coding that runs directly on the module, with a complete CincoBit curriculum.
Recommended: 100s of *duino optionsโ

Arduino is our recommended path for developers. Every DUELink module is also an Arduino-compatible board โ making the whole catalog a family of *duino boards in every shape, with every feature. If you've used Arduino before, you'll be productive in minutes.
Direct C++โ

The same family of *duino boards is also programmable in bare-metal C++. Use STM32CubeIDE, Keil MDK, or any ARM toolchain for full control of the STM32 microcomputer.
Behind the scenes: the Internal Engineโ

The default firmware on every module is a small DUELink scripting engine โ it's what receives plain text commands and runs them. You don't usually need to think about it, but advanced users can dig into the engine, scripting language, drivers, host mode, the console, and more under the Advanced section of the docs.