In this article, we will provide a detailed introduction to the hardware circuit part of the Arduino development board, specifically the pinout diagram and definitions of the Arduino Uno. The Arduino Uno microcontroller uses Atmel’s ATmega328. The pinout diagram of the Arduino Uno development board includes 14 digital pins, 6 analog inputs, a power jack, USB connection, and ICSP header. The pin multiplexing functionality provides more options for different applications such as driving motors, LEDs, reading sensors, etc. In this article, we will introduce the functions of the Arduino Uno pins.
Arduino Uno Pinout Diagram

Arduino Uno Pinout – Power
The Arduino Uno development board can be powered in three ways:
● DC power jack – The Arduino development board can be powered using the power jack. The power jack is typically connected to an adapter. The power supply range for the board can be 5-20V, but the manufacturer recommends keeping it between 7-12V. Above 12V, the voltage regulator may overheat, and below 7V, it may not provide sufficient power.
● VIN pin – This pin is used to power the Arduino Uno development board using an external power source. The voltage should be controlled within the range mentioned above.
● USB cable – When connected to a computer, it provides 500mA/5V voltage.

There is a polarity protection diode rated at 1 amp between the positive terminal of the power jack and the VIN pin.
The power supply you use determines the power available for the circuit. For example, when powering the circuit via USB, the maximum current is limited to 500mA. This power is also used to power the MCU, peripherals, onboard voltage regulators, and connected components. When powering the circuit through the power jack or VIN, the maximum available current depends on the 5V and 3.3V voltage regulators on the Arduino development board.
● 5v and 3v3
According to the manufacturer’s datasheet, they provide regulated 5V and 3.3V to power external components.
● GND
In the Arduino Uno pinout diagram, there are 5 GND pins, all of which are interconnected.
The GND pins are used to close the circuit loop and provide a common logic reference level throughout the circuit. It is essential to ensure that all GNDs (Arduino, peripherals, and components) are interconnected and have a common point.
● RESET – Resets the Arduino development board.
● IOREF – This pin is the input/output reference. It provides the reference voltage for the microcontroller’s operation.
Arduino Uno Pinout – Analog Inputs
The Arduino Uno has 6 analog pins, which are used as ADC (Analog to Digital Converter).
These pins serve as analog inputs but can also be used as digital inputs or digital outputs.

Analog to Digital Conversion
ADC stands for Analog to Digital Converter. An ADC is an electronic circuit used to convert analog signals into digital signals. This digital representation of the analog signal allows the processor (which is a digital device) to measure the analog signal and use it in its operations.
The Arduino pins A0-A5 can read analog voltages. On the Arduino, the ADC has a 10-bit resolution, meaning it can represent the analog voltage through 1,024 digital levels. The ADC converts the voltage into bits that the microprocessor can understand.
A common example of ADC is VoIP (Voice over Internet Protocol). Every smartphone has a microphone that converts sound waves (voice) into analog voltage. This is converted into digital data by the device’s ADC, transmitted over the internet to the receiving end.
Arduino Uno Pinout – Digital Pins
The pins 0-13 on the Arduino Uno are used as digital input/output pins. Among these, pin 13 is connected to the onboard LED indicator; pins 3, 5, 6, 9, 10, and 11 have PWM functionality.
It is important to note:
● Each pin can provide/receive a maximum current of 40 mA. However, the recommended current is 20 mA.
● The absolute maximum current provided by all pins is 200 mA.

What Does Digital Level Mean?
Digital is a way to represent a single bit of voltage: 0 or 1. The digital pins on the Arduino are designed to be used as input or output pins based on user requirements. Digital pins can be turned on or off. When turned on, they are at a high level of 5V, and when off, they are at a low level of 0V.
On the Arduino, when a digital pin is configured as output, it is set to 0 or 5V.
When a digital pin is configured as input, the voltage is provided by an external device. This voltage can vary between 0-5V and is converted into a digital representation (0 or 1). To determine this, there are two thresholds:
● Below 0.8V – considered as 0.
● Above 2.0V – considered as 1.
When connecting components to digital pins, ensure that the logic levels match. If the voltage is between the thresholds, the returned value will be uncertain.
What is PWM?
PWM, or Pulse Width Modulation, is a modulation technique used to encode messages into a pulsed signal. PWM consists of two key parts: frequency and duty cycle. The PWM frequency determines the time required to complete a single cycle (period) and the speed of the signal’s fluctuations from high to low. The duty cycle determines how long the signal remains high during the total time period. The duty cycle is expressed as a percentage.
On the Arduino, the PWM-enabled pins produce a constant frequency of about 500Hz, while the duty cycle varies according to user-set parameters. See the diagram below:

PWM signals are used for speed control of DC motors, dimming LEDs, etc.
Communication Protocols
Serial (TTL) – Digital pins 0 and 1 are the serial pins of the Arduino Uno.
They are used by the onboard USB module.
What is Serial Communication?
Serial communication is used to exchange data between the Arduino board and other serial devices (such as computers, displays, sensors, etc.). Each Arduino board has at least one serial port. Serial communication occurs on digital pins 0 (RX) and 1 (TX) as well as USB. Arduino also supports serial communication via digital pins using the SoftwareSerial Library. This allows users to connect multiple serial-enabled devices while keeping the main serial port available for USB.
Software serial and hardware serial – Most microcontrollers have hardware for communicating with other serial devices. Software serial ports use pin change interrupts for communication. There is a built-in library for software serial communication. The processor uses software serial to simulate additional serial ports. The only drawback of software serial is that it requires more processing and cannot support the same high speeds as hardware serial.
SPI – SS / SCK / MISO / MOSI pins are dedicated pins for SPI communication. They can be found on the Arduino Uno’s digital pins 10-13 and the ICSP header.
The Serial Peripheral Interface (SPI) is a serial data protocol used by microcontrollers to communicate with one or more external devices in a bus. SPI can also be used to connect two microcontrollers. On the SPI bus, there is always one device represented as the master device, and all other devices are represented as slave devices. In most cases, the microcontroller is the master device. The SS (Slave Select) pin determines which device the master is currently communicating with.
Devices enabled for SPI always have the following pins:
● MISO (Master In Slave Out) – The line used to send data to the master device.
● MOSI (Master Out Slave In) – The line used to send data to peripheral devices from the master.
● SCK (Serial Clock) – The clock signal generated by the master device to synchronize data transmission.
I2C – SCL / SDA pins are dedicated pins for I2C communication. On the Arduino Uno, they can be found on analog pins A4 and A5.
The I2C communication protocol is commonly referred to as the “I2C bus.” The I2C protocol is designed for communication between components on a single circuit board. When using I2C, there are two communication lines, called SCL and SDA.
● SCL is the clock line used to synchronize data transmission.
● SDA is the communication line used for data transmission.
Each device on the I2C bus has a unique address, allowing up to 255 devices to be connected on the same bus.
Aref – Reference voltage for analog inputs.
Interrupts – INT0 and INT1. The Arduino Uno has two external interrupt pins.
External Interrupts – External interrupts occur when external disturbances arise. Disturbances may come from the user or other hardware devices in the network. Common uses of these interrupts in Arduino include reading square waves generated by encoders or waking the processor from external events.
There are two forms of interrupts in Arduino:
● External input
● Pin state changes
There are two external interrupt pins on the ATmega168 / 328, referred to as INT0 and INT1. INT0 and INT1 are mapped to pins 2 and 3 respectively. In contrast, pin change interrupts can be activated on any pin.
Arduino Uno Pin Definitions – ICSP Header
ICSP stands for In-Circuit Serial Programming. The name comes from In-System Programming (ISP). Arduino-related manufacturers, such as Atmel, developed their own ICSP headers. These pins allow users to program the firmware on the Arduino development board. There are 6 ICSP pins on the Arduino development board that can be connected to a programmer device via a programming cable.

Understanding Pin Definitions
The Arduino Uno development board is one of the most popular development boards on the market today, which is why we focus on this board in this article. This article primarily covers most of its functions, but there are many advanced options we did not cover here.
When choosing a development board for a project, it is important to understand its features and limitations. Understanding the different communication protocols used by the development board is also crucial. Of course, you do not need to remember all this information; you can return to this article and read the relevant information.
If you have any comments or questions, feel free to reply below, and of course, share this article with your Arduino-loving friends.
For more content, please click“Read Original” 》》