The Arduino is one of the most popular electronics prototyping platforms for learning/using microcontrollers on the market today. This is because the creators of Arduino have simplified the programming and use of microcontrollers (hardware and software). This means that everyone, including beginners, can now build pretty complicated stuff without knowing the low-level nitty-gritty of microcontrollers. It is this level of abstraction that has revolutionized early engineering education and applications. Here, I will give a gentle introduction to the Arduino. At the end of this tutorial, you will know what the Arduino is, what it can do, and the sample projects that you can implement with the Arduino.

What is an Arduino?

To develop a microcontroller project, you need to connect additional components such as oscillators, power regulators, and breadboards. However, most beginners find this procedure intimidating due to the potential of faulty connections. The Arduino simplified that process by incorporating all the necessary components on a “Development Board.” Users can focus more on the functionality of their projects rather than on the configuration of the circuit.

(a) Arduino development board and (b) Arduino IDE

Simply put, the Arduino consists of the hardware component and the software component, as shown in the diagram above.

Arduino Hardware

The hardware component consists of an Arduino Board. The board is the printed circuit board that consists of a microcontroller and all the required electronic components that support basic microcontroller operations. Such operations include microcontroller programming via USB, power connection through USB or DC jack, and Input/Output interfacing via female headers.

There are many official Arduino boards, but the most popular is the Arduino Uno board, which relies on the ATMEGA328 microcontroller. You can learn more about microcontrollers from this tutorial. The hardware is also open-source, which means that there are no restrictions on what developers can do. We can see the result of that policy in the form of many third-party Arduino boards and accessories on the market.

Arduino Software

The second part of the Arduino is the Arduino Integrated Development Environment (IDE). The IDE is a software application that you use to write your code and program your Arduino boards. The software is free and very easy to use compared with traditional IDEs for microcontrollers. You open the software, select your Arduino board, select the serial port of your Arduino, write your code and then click to upload the code to the microcontroller.

If you do not know where to start with your code, you can look at the code examples for a starting point. But what I like about the Arduino is the presence of tons and tons of official/standard and third-party Arduino libraries. Libraries make it easier for users to work with sensors or external hardware on the Arduino. Developers can incorporate complex stuff in their projects with the use of simple functions.

Most Popular Arduino Resources

  • Adafruit
  • Hackk a Day
  • Make
  • Bildr
  • SparkFun
  • Instructables
  • YouTube
  • Books
  • SeeedStudio
  • Parallax
  • CircuitBasics. From this website, you can find a wide variety of example projects that range in complexity. You can adapt them to suit your application.

What can Arduino do?

The Arduino is an exciting platform, and you can do a lot of projects that do not require heavy computations with it. Circuit Basics provides one of the largest collections of Arduino projects. You can see some of the input/output sensors or devices that you can use on the Arduino.

Sample input and output devices for the Arduino

However, one of the questions you will need to ask yourself before beginning any project is, is Arduino the right controller for your project? This is one of the difficult questions to answer, but you can look at the Arduino specs in the table below to “size” your project.

Arduino Specs

ArduinoMicrocontrollerFeaturesPerformance specificationsCommon applications
UnoATmega328PClock Speed: 16 MHz
Flash Memory: 32KB
RAM: 2KB
GPIO: 20
Analog Inputs: 6
DAC: 0
PWM: 6
UART: 1
SPI: 1
I2C: 1
Connector: USB Type B
USB-to-Serial: ATmega16U2
Shield Compatible
Operating Voltage: 5V
Input Voltage: 7 – 12 V
20mA maximum current draw per pin
Entry-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: 22
Analog Inputs: 8
DAC: 0
PWM: 6
UART: 1
SPI: 1
I2C: 1
Connector: 6-pin UART
No USB-to-Serial
Not Shield Compatible
Operating Voltage: 5V
Input Voltage: 7 – 12 V
20mA maximum current draw per pin
Entry-level hobby projects:
Mega 2560 R3ATmega2560Clock Speed: 16 MHz
Flash Memory: 256 KB
RAM: 8 KB
GPIO: 54
Analog Inputs: 16
DAC: 0
PWM: 15
UART: 4
SPI: 1
I2C: 1
Connector: USB Type B
USB-to-Serial: ATmega16U2
Shield Compatible
Operating Voltage: 5 VMulti motor control
Multi-sensor interfacing
Temperature sensing
Water level detection
Home automation
Security systems
Embedded Systems
IoT applications
Pro MicroATmega32U4Clock Speed: 16 MHz
Flash Memory: 32 KB
RAM: 2.5 KB
GPIO: 18
Analog Inputs: 9
DAC: 0
PWM: 5
UART: 1
SPI: 1
I2C: 1
Connector: USB Micro-B
USB-to-Serial: Native USB
Not Shield Compatible
Operating Voltage: 5 V Entry-level hobby projects:
LeonardoATmega32U4Clock Speed: 16 MHz
Flash Memory: 32 KB
RAM: 2.5 KB
GPIO: 20
Analog Inputs: 12
DAC: 0
PWM: 7
UART: 1
SPI: 1
I2C: 1
Connector: USB Micro-B
USB-to-Serial: Native USB
Shield Compatible
Operating Voltage: 5 V Entry-level hobby projects:
MKR wifi 1010SAMD21
Cortex M0+
Clock Speed: 48 MHz
Flash Memory: 256KB
RAM: 32KB SRAM
GPIO: 22
Analog Inputs: 7
DAC: 1
PWM: 12
UART: 1
SPI: 1
I2C: 1
Connector: USB Micro-B
USB-to-Serial: Native USB
Wifi
Operating Voltage: 3.3 VProjects requiring wifi connectivity,
IoT applications.
MKR1000ATSAMW25H18Clock Speed: 48 MHz
Flash Memory: 256KB
RAM: 32KB
GPIO: 22
Analog Inputs: 7
DAC: 1
PWM: 12
UART: 1
SPI: 1
I2C: 1
Connector: USB Micro-B
USB-to-Serial: Native USB
Wifi
Operating Voltage: 3.3 VProjects requiring wifi connectivity,
IoT applications.
DueAT91SAM3X8EClock Speed: 84 MHz
Flash Memory: 512 KB
RAM: 96 KB
GPIO: 54
Analog Inputs: 12
DAC: 2
PWM: 12
UART: 4
SPI: 1
I2C: 2
Connector: USB Micro-B
USB-to-Serial: ATmega16U2
Shield Compatible
Operating Voltage: 3.3 VIndustrial automation,
Home and security systems,
Virtual reality applications,
GSM based projects,
Embedded systems,
Industrial IoT,
Wireless Sensor Networks,
UAVs
MKR Vidor 4000FPGA: Intel Cyclone
10CL016
SAMD21: Microchip
ATSAMD21
(Arm Cortex-M0+ processor)
Clock Speed:
FPGA: 48MHz – 200MHz
SAMD21: 32.768kHz
Flash Memory:
FPGA: 2MB
SAMD21: 256KB
RAM:
FPGA: 8MB SDRAM
SAMD21: 32KB SRAM
GPIO:
FPGA: 22
SAMD21: 22
Analog Inputs:
FPGA: N/A
SAMD21: 7
DAC:
FPGA: N/A SAMD21: 1
PWM:
FPGA: All Pins
SAMD21: 12
UART:
FPGA: Up to 7
SAMD21: 1
SPI:
FPGA: Up to 7
SAMD21: 1
I2C:
FPGA: Up to 7
SAMD21: 1
Connector
USB Micro-B
USB-to-Serial
Native USB
FPGA, wifi,
Bluetooth Low Energy,
micro-HDMI
video output
connector
Operating Voltage: 3.3 VProjects requiring “more power.”
Image processing,
Audio and video processing,
Medical Image Fusion,
Digital Signal Processing applications
Atmega328 Specs

Arduino Programming

One of the reasons Arduino is so popular is that it is easy to write the Arduino code. Beginners find traditional C programming for microcontrollers a bit difficult to master. With Arduino programming language, all those complex instructions are wrapped in easy-to-use Arduino functions. The Arduino programming language is based on C/C++, and it requires at least two functions to run: void setup() and void loop(). The setup function runs only once, while the loop runs as long as there is power in the Arduino.