The Arduino is one of the most popular electronics prototyping platforms for learning and using microcontrollers on the market today. This is because the creators of Arduino have simplified the circuitry and programming of the ATMEGA328 microcontroller to the point that anyone can use it.

Even if you have no previous experience building and programming electronic circuits, the Arduino will let you build fairly complicated projects without knowing the details about microcontrollers. The level of abstraction provided by the Arduino has made it so much easier for people to learn electronics engineering and programming.

What is an Arduino?

To develop projects with most microcontrollers, you need to connect additional components like crystal oscillators, voltage regulators, capacitors, and resistors to the microcontroller.

The Arduino eliminates the need to connect external components – it works out of the box. This allows users to focus more on designing circuits and building prototypes, rather than on getting the microcontroller to work.

The Arduino Board

The Arduino is a development board for the ATMEGA328 microcontroller. The Arduino has all of the electronic components needed to support the ATMEGA328 on one PCB. There are other useful features like input/output pins, a USB port for communication between the Arduino and a computer, and a 9V DC power connector.

There are many different types of Arduino boards, but the most popular is the Arduino Uno:

The design of the Arduino’s hardware is open-source, which means that anyone can integrate it into a design without any licensing agreements or patent infringements. You can see proof of open-source nature of the Arduino from the many third-party Arduino “clones” and accessories on the market.

Programming the Arduino

One of the reasons the Arduino is so popular is that it is super easy to write the Arduino code. Most microcontrollers are programmed with the C language or assembly code, which is difficult to master.

The Arduino programming language is based on C/C++, which is much easier to learn and use. There are also lots of tutorials and resources online that can teach you how to program it. One great resource is our Ultimate Guide to the Arduino video course. We teach all of the basic and advanced Arduino programming skills that will help you build any project.

The Arduino integrated development environment (IDE) is where you write the Arduino code and upload it to the board. The Arduino IDE is a software application that is run from a computer. The software is free and very easy to use compared with traditional IDEs for microcontrollers. Just open the IDE, write your code, and click a button to upload the code to the Arduino.

If you do not know where to start with your code, you can look at the code examples for a starting point.

One of the great things about the Arduino programming language is the number of libraries available for it. Libraries are bundles of code that contain functions to do common tasks like read the values from an accelerometer or output a PWM signal to control servos. Libraries make it much easier to work with external sensors and modules on the Arduino because the code is already written for you.

What Can the Arduino Do?

The Arduino is a versatile electronics development platform, so you can connect a huge variety of input and output devices to it. Input devices could be a button, switch, temperature sensor, GPS sensor, magnetometer, PIR sensor, ultrasonic range finder, and many more.

Output devices could be a servo, DC motor, LCD display, LED, or buzzer to name a few:

Sample input and output devices for the Arduino

The Arduino can process the inputs from any input device and output a result to an output device based on certain conditions defined in the Arduino program.

How to Pick the Right Arduino

The Arduino is an extremely capable development board. But with so many Arduino boards available, how do you choose the right one for your project? The answer will depend on what you want to do with the Arduino, but the table below should help you decide:

Arduino modelMicrocontrollerFeaturesOperating voltageCommon applications
UnoATmega328PClock speed: 16 MHz
Flash memory: 32KB
RAM: 2KB
GPIO pins: 20
Analog inputs: 6
DAC: No
PWM: 6 pins
UART, SPI, and I2C communication
Connector: USB
5VEntry-level hobby projects:
RFID access control,
Motor control:
Temperature monitoring,
GSM based projects,
Pro MiniATmega328PClock speed: 16 MHz
Flash memory: 32KB
RAM: 2 KB
GPIO pins: 22
Analog inputs: 8
DAC: No
PWM: 6 pins
UART, SPI, and I2C communication
Connector: 6-pin UART
No USB-to-Serial
Not Shield Compatible
5V Entry-level hobby projects
Mega 2560 R3ATmega2560Clock speed: 16 MHz
Flash memory: 256 KB
RAM: 8 KB
GPIO pins: 54
Analog inputs: 16
DAC: No
PWM: 15 pins
UART, SPI, and I2C communication
Connector: USB
Shield Compatible
5VMotor control, sensor interfacing, home automation, security systems,
embedded systems, IoT applications
Pro MicroATmega32U4Clock speed: 16 MHz
Flash memory: 32 KB
RAM: 2.5 KB
GPIO pins: 18
Analog inputs: 9
DAC: No
PWM: 5 pins
UART, SPI, and I2C communication
Connector: USB
Not Shield Compatible
5V Entry-level hobby projects
LeonardoATmega32U4Clock speed: 16 MHz
Flash memory: 32 KB
RAM: 2.5 KB
GPIO pins: 20
Analog inputs: 12
DAC: No
PWM: 7 pins
UART, SPI, and I2C communication
Connector: USB
Shield Compatible
5V Entry-level hobby projects
MKR WiFi 1010SAMD21
Cortex M0+
Clock speed: 48 MHz
Flash memory: 256KB
RAM: 32KB SRAM
GPIO pins: 22
Analog inputs: 7
DAC: Yes
PWM: 12 pins
UART, SPI, and I2C communication
Connector: USB
WiFi
3.3VProjects requiring WiFi connectivity,
IoT applications
MKR1000ATSAMW25H18Clock speed: 48 MHz
Flash memory: 256KB
RAM: 32KB
GPIO pins: 22
Analog inputs: 7
DAC: Yes
PWM: 12 pins
UART, SPI, and I2C communication
Connector: USB
WiFi
3.3 VProjects requiring WiFi connectivity,
IoT applications.
DueAT91SAM3X8EClock speed: 84 MHz
Flash memory: 512 KB
RAM: 96 KB
GPIO pins: 54
Analog inputs: 12
DAC: Yes
PWM: 12 pins
UART, SPI, and I2C communication
Connector: USB
Shield Compatible
3.3 VIndustrial automation, security systems, virtual reality, GSM, embedded systems, industrial IoT, wireless sensor networks,
drones and robots
MKR Vidor 4000FPGA: Intel Cyclone
10CL016
SAMD21: Microchip
ATSAMD21
(Arm Cortex-M0+ processor)
Clock speed: 200MHz
Flash memory: 2MB
RAM: 8MB SDRAM
GPIO pins: 22
Analog inputs: 7
DAC: Yes
PWM: 12 pins
UART, SPI, and I2C communication
Connector: USB
WiFi
Bluetooth
3.3 VProjects requiring more processing power, image processing, audio and video processing, image fusion, digital signal processing

Hope this article has given you a better understanding about what the Arduino is, what it can be used for, and how to pick the best Arduino for your projects! Be sure to leave a comment below if you have questions about anything.