Writing programs for your Arduino board is made possible through the Arduino Programming Language, also known as the Arduino Language. This language is based on the Wiring development platform, which is built on top of Processing. The Arduino IDE (Integrated Development Environment) facilitates the coding process by providing a programming editor with integrated libraries support and a simple way to compile and load programs onto the board.

The Arduino Programming Language is essentially a framework built on top of C++. Although it may not be considered a traditional programming language, this distinction helps beginners get started without confusion. In Arduino, a program is referred to as a “sketch,” typically saved with the “.ino” extension.

One key difference between the Arduino Programming Language and regular C or C++ is that all code must be contained within two main functions: setup() and loop(). The setup() function is called once at the start of the program, while the loop() function is repeatedly called while the program is running. Instead of having a main() function as the entry point, the Arduino IDE preprocesses the sketch to ensure it becomes a valid C++ program.

The Arduino Programming Language includes built-in libraries that facilitate integration with the functions and features provided by the Arduino board. To illustrate a basic Arduino project which involves turning an LED on and off, you can use functions like pinMode(), delay(), digitalWrite(), and constants such as HIGH, LOW, and OUTPUT. Here is an example of the canonical “Hello, World!” Arduino project:

#define LED_PIN 13

void setup() {
 // Configure pin 13 as a digital output
 pinMode(LED_PIN, OUTPUT);
}

void loop() {
 // Turn on the LED
 digitalWrite(LED_PIN, HIGH);
 // Wait for 1 second (1000 milliseconds)
 delay(1000);
 // Turn off the LED
 digitalWrite(LED_PIN, LOW);
 // Wait for 1 second (1000 milliseconds)
 delay(1000);
}

Keep in mind that while you can split your code into multiple files, all files must be located in the same folder. This limitation may become a hurdle as your program grows in complexity, but for larger projects, migrating to a native C++ setup is possible.

Apart from the Arduino Programming Language, there are alternative languages and frameworks available for programming Arduino boards, such as Node.js with the Johnny Five project, Python with pyserial, and Go with Gobot. However, for most tutorials and resources, you’ll find that the Arduino Programming Language is the predominant choice due to its native integration and its status as the canonical way to work with Arduino devices.

In addition to the language itself, the Arduino Programming Language provides a set of built-in constants and functions that simplify programming tasks. The built-in constants include HIGH (representing a high voltage level), LOW (representing a low voltage level), INPUT (for setting a pin as an input), OUTPUT (for setting a pin as an output), and INPUT_PULLUP (for setting a pin with an internal pull-up resistor). Another important constant is LED_BUILTIN, which refers to the number of the onboard pin typically associated with LED functions.

Furthermore, the Arduino Programming Language includes built-in functions to handle program lifecycle, input/output operations, analog input/output, time-related operations, mathematical calculations, working with alphanumeric characters, generating random numbers, and working with bits and bytes. These functions allow you to read from and write to digital pins, read analog values, control timing, perform mathematical computations, check and manipulate characters, and manage interrupts.

The Arduino Programming Language offers a wealth of functionality and is well-documented, making it an accessible and versatile choice for programming Arduino boards. Whether you are a beginner or an experienced developer, the Arduino language and IDE provide a user-friendly environment for creating a wide range of projects.