Project setup
Every Arduino project starts with a short “New Project…” dialog and comes with three fixed documents —
setup, loop, and Devices — so there’s always a place for describing your
wiring, not just for writing code.
Creating a project
Section titled “Creating a project”File > New Project (or Ctrl+N, or the welcome page’s New Project… button) opens a dialog asking for a name, a folder (it follows the name until you pick your own with Browse…), and a board.
- The board list covers the common ones: Uno, Nano, Nano (old bootloader), Mega 2560, and ESP32 Dev Module.
The board is chosen once and never changes. It’s written to
falang/config/arduino.jsoninside the project folder — versioned along with everything else in the project — and every later compile, upload, and debug upload reads it from there. Build & Upload shows it as plain text; there’s no board picker there any more, only a port to choose.Opening a project created before this existed treats it as an Uno and writes the config file the first time you open it, so it behaves the same way from then on.
The fixed documents
Section titled “The fixed documents”setupandloopare ordinary function documents — the same editor as any other function — but pinned: the project tree offers no delete/rename/drag on them, and a new document at the project root can’t be namedsetuporloopeither. They always exist and compile straight to Arduino’s ownsetup()/loop().Devicesis a third pinned document, but it isn’t a scheme — it’s a small form for describing the board’s wiring, not code (see below).
The Devices document
Section titled “The Devices document”Two tables, both feeding directly into the generated setup():
Digital pins — a pin number, a mode (
Input,Output, orInput (pull-up)), and an optional label for your own reference. Each row becomes onepinMode(…)call at the top ofsetup(), in the order you listed them — no need to write it by hand in a code block any more.Devices — pick a built-in driver, give the instance a name, and fill in the fields it asks for. LCD1602 (I2C) was the first built-in device: it only asks for the display’s I2C address (the common presets — 0x20, 0x27, 0x3E — are offered as a dropdown). LCD1602 (Parallel) is the same display wired directly to 6 GPIO pins instead — for boards or setups without I2C — and asks for those 6 pins (RS, EN, D4-D7) instead of an address. Adding either emits its own setup call (initializing the display) right after the pin modes.
Every bundled driver declares a device section, so all of them show up in this list (DHT: data pin and sensor; HC-SR04: trig and echo pins; servo: pin; RGB strip: data pin and length; LCD1602: address or pins). The icon menu lists a driver’s actions only while the project has at least one device of that driver — add the device here first, then insert its actions.
Any driver behind a device instance is included in the build automatically — its source files and its
#includeare added to the sketch even if no action node anywhere insetup/loopever calls into it.
Build & Upload
Section titled “Build & Upload”The board is already fixed, so Build & Upload only asks you to pick a port. The generated sketch is
written to src/sketch/sketch.ino inside the project folder (plus any driver source files it needs) —
there’s no more hidden .build folder to know about. You can open and read the generated code like any
other file, and since it lives under src/, it’s captured by version history the same as everything else
in the project.
