Arduino IDE
Description
The Arduino project began in 2005 to provide design students at the Interaction Design Institute Ivrea in Italy with a way to create interactive physical objects without having to be electrical engineers. A microcontroller development board and a easy programming environment — the Arduino IDE — opened up a route from concept to working prototype that bypassed the complexity of traditional embedded systems development. The combination took off far beyond the academic context: Arduino boards and the IDE became the starting point of hobbyists, artists, educators, and professional prototypers building everything from weather stations to robotic arms to interactive art installations.
The company started by Massimo Banzi and the original Arduino team, Arduino LLC, keeps the IDE free and open source. The Arduino hardware and software platform has given rise to an entire ecosystem of compatible boards, shields and libraries, with the IDE as the common interface that brings them together.
Code Editor
The editor of the IDE offers syntax highlighting for the C/C++ dialect of Arduino, auto-indentation, and a code folding system for collapsing the bodies and blocks of functions. Arduino IDE 2 added autocomplete that will suggest function names, variable names, and library function as the user types, and an inline error highlighting that marks problematic lines as the code edits rather than only at compile time. The editor supports multiple files open at the same time in tabs for projects that involve more than one file.
Sketch Structure
Arduino programs — called sketches — adhere to a two-function structure that the IDE enforces: setup() runs once when the microcontroller starts, and loop() runs repeatedly after that. This structure abstracts away the main() entry point and interrupt-driven programming model of bare C embedded development, providing beginners with a predictable and clear execution model. The IDE produces the surrounding code that invokes these functions, so a new sketch begins with just these two empty functions waiting to be filled in.
Board Manager
The Board Manager installs support packages for Arduino and compatible hardware; The standard Arduino boards — Uno, Mega, Nano, Leonardo, Micro and the newer Uno R4 and Nano Every — install from the Arduino AVR package. Third-party board support packages include extra hardware: the ESP32 package includes support for the popular Wi-Fi-capable ESP32 family; the Raspberry Pi RP2040 package includes support for the Pico; and dozens of other packages cover specialized boards. Board manager downloads and installs these packages, which makes the IDE aware of the processor, memory layout, and upload method of the selected hardware.
Library Manager
The Library Manager gives access to thousands of community and official Arduino libraries. Libraries are code written to extend the IDE and perform a specific task: read sensors, control motor controllers, communicate over I2C and SPI buses, display content on OLED screens, connect to Wi-Fi networks, and hundreds of other tasks. Installing a library using the manager makes it available for inclusion in sketches using an #include statement. The manager displays descriptions, versions and dependency information for each library.
Serial Monitor and Plotter
The Serial Monitor opens a terminal window that communicates with the connected Arduino board via the USB connection, showing text output the sketch sends using Serial.println() and allowing the user to type and send text back to the board. This two-way text communication is the main debugging tool for Arduino sketches, allowing the developer to read from sensors, trace the program flow and test inputs without using extra hardware. The Serial Plotter is a visual tool for graphing numeric values transmitted over the serial connection in the form of a live graph, displaying sensor readings over time without the need for any external graphing software.
Compiler and Upload
The IDE uses the appropriate compiler toolchain for the selected board — in most cases, the AVR-GCC toolchain for standard Arduino boards — to compile Arduino sketches and sends the compiled binary to the connected board via USB. The output panel displays compilation warnings and errors including line numbers. Upload progress shows a progress bar and is done in seconds for normal sketches on common hardware.