Arduino UNO R3 ATmega328 - Atmega16u4 (compatible)

Arduino compatible
ID: #99188570 In stock, 148pcs
25.00 AED

One of the most popular Arduino boards out there is the Arduino Uno.  While it was not actually the first board to be released, it remains to be the most actively used and most widely documented on the market.

 Because of its extreme popularity, the Arduino Uno has a ton of project tutorials and forums around the web that can help you get started or out of a jam.  We’re big fans of the Uno because of it’s great features and ease of use.

we give the opportunity to have an excellent copy of Genuine Arduino at a nifty price and e guaranty the performance of our product .

The Uno is a microcontroller board based on the ATmega328P. It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz quartz crystal, a USB connection, a power jack, an ICSP header and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started.. You can tinker with your UNO without worrying too much about doing something wrong, worst case scenario you can replace the chip for a few dollars and start over again.

this is a complete technical overview of Arduino as components and MCU  Before we can understand the UNO's hardware, we must have a general overview of the whole system first.

After your code is compiled using Arduino IDE, it should be uploaded to the main microcontroller of the Arduino UNO using a USB connection. Because the main microcontroller doesn’t have a USB transceiver, you need a bridge to convert signals between the serial interface (UART interface) of the microcontroller and the host USB signals.

The bridge in the latest revision is the ATmega16U2, which has a USB transceiver and also a serial interface (UART interface).

To power your Arduino board, you can use the USB as a power source. Another option is to use a DC jack. You may ask, “if I connect both a DC adapter and the USB, which will be the power source?” The answer will be discussed in the “Power Part” section from this article.

To reset your board, you should use a push button in the board. Another source of reset should be every time you open the serial monitor from Arduino IDE.

Technical specifications:

Microcontroller: Microchip ATmega328P 

Operating Voltage: 5 Volt

Input Voltage: 7 to 20 Volts

Digital I/O Pins: 14 (of which 6 provide PWM output)

Analog Input Pins: 6

DC Current per I/O Pin: 20 mA

DC Current for 3.3V Pin: 50 mA

Flash Memory: 32 KB of which 0.5 KB used by bootloader



Clock Speed: 16 MHz

Length: 68.6 mm

Width: 53.4 mm

Weight: 25 g

we redistributed the original Arduino UNO schematic to be more readable below.we advise you to download it and open the PCB and schematic using Eagle CAD while you are reading this article.


Redistributed Version of Original Arduino Schematic
Redistributed version of the original Arduino schematic. Click to enlarge.


   Schematic Files  

The Microcontroller

It is important to understand that the Arduino board includes a microcontroller, and this microcontroller is what executes the instructions in your program. If you know this, you won't use the common nonsense phrase "Arduino is a microcontroller" ever again.

The ATmega328 microcontroller is the MCU used in Arduino UNO R3 as a main controller. ATmega328 is an MCU from the AVR family; it is an 8-bit device, which means that its data-bus architecture and internal registers are designed to handle 8 parallel data signals.

ATmega328 has three types of memory:

  • Flash memory: 32KB nonvolatile memory. This is used for storing application, which explains why you don't need to upload your application every time you unplug arduino from its power source.

  • SRAM memory: 2KB volatile memory. This is used for storing variables used by the application while it's running.

  • EEPROM memory: 1KB nonvolatile memory. This can be used to store data that must be available even after the board is powered down and then powered up again.


Let us briefly go over some of this MCU's specs:



This MCU is a DIP-28 package, which means that it has 28 pins in the dual in-line package. These pins include power and I/O pins. Most of the pins are multifunctional, which means that the same pin can be used in different modes based on how you configure it in the software. This reduces the necessary pin count, because the microcontroller does not require a separate pin for every function. It can also make your design more flexible, because one I/O connection can provide multiple types of functionality.

Other packages of ATmega328 are available like TQFP-32 SMD package (Surface Mount Device).


Two Different Packages of Atmega328
Two different packages of the ATmega328. Images courtesy of Sparkfun and Wikimedia.



The MCU accepts supply voltages from 1.8 to 5.5 V. However, there are restrictions on the operating frequency; for example, if you want to use the maximum clock frequency (20 MHz), you need a supply voltage of at least 4.5 V.


Digital I/O:

This MCU has three ports: PORTC, PORTB, and PORTD. All pins of these ports can be used for general-purpose digital I/O or for the alternate functions indicated in the pinout below. For example, PORTC pin0 to pin5 can be ADC inputs instead of digital I/O.

There are also some pins that can be configured as PWM output. These pins are marked with “~” on the Arduino board.

Note: The ATmega168 is almost identical to the ATmega328 and they are pin compatible. The difference is that the ATmega328 has more memory—32KB flash, 1KB EEPROM, and 2KB RAM compared to the ATmega168's 16KB flash, 512 bytes EEPROM, and 1KB RAM.


Atmega328 Pinout With Arduino
ATmega168 pinout with Arduino labels; the ATmega168 and ATmega328 are pin compatible. Image courtesy of Arduino.


Arduino UNO R3 Pinout
Arduino UNO R3 pinout. Image courtesy of GitHub.

ADC Inputs:

This MCU has six channels—PORTC0 to PORTC5—with 10-bit resolution A/D converter. These pins are connected to the analog header on the Arduino board.

One common mistake is to think of analog input as dedicated input for A/D function only, as the header in the board states ”Analog”. The reality is that you can use them as digital I/O or A/D.


Atmega328 Block Diagram
ATmega328 block diagram.


As shown in the diagram above (via the red traces), the pins related to the A/D unit are:

  • AVCC: The power pin for the A/D unit.
  • AREF: The input pin used optionally if you want to use an external voltage reference for ADC rather than the internal Vref. You can configure that using an internal register.


Selecting Vref Source From Internal Register
Internal register settings for selecting the Vref source.


UART Peripheral:

A UART (Universal Asynchronous Receiver/Transmitter) is a serial interface. The ATmega328 has only one UART module.

The pins (RX, TX) of the UART are connected to a USB-to-UART converter circuit and also connected to pin0 and pin1 in the digital header. You must avoid using the UART if you’re already using it to send/receive data over USB.


SPI Peripheral:

The SPI (Serial Peripheral Interface) is another serial interface. The ATmega328 has only one SPI module.

Besides using it as a serial interface, it can also be used to program the MCU using a standalone programmer. You can reach the SPI's pins from the header next to the MCU in the Arduino UNO board or from the digital header as below:



The I2C or Two Wire Interface is an interface consisting of only two wires, serial data, and a serial clock: SDA, SCL.

You can reach these pins from the last two pins in the digital header or pin4 and pin5 in the analog header.


Other Functionality:

Other functionality is included in the MCU, such as that offered by the timer/counter modules. You may not be aware of the functions that you don't use in your code. You can refer to the datasheet for more information.


Arduino UNO R3 MCU Part
Arduino UNO R3 MCU part.


Returning to the electronic design, the microcontroller section has the following:

  • ATmega328-PU: The MCU we just talked about.
  • IOL and IOH (Digital) Headers: These headers are the digital header for pins 0 to 13 in addition to GND, AREF, SDA, and SCL. Note that RX and TX from the USB bridge are connected with pin0 and pin1.
  • AD Header: The analog pins header.
  • 16 MHz Ceramic Resonator (CSTCE16M0V53-R0): Connected with XTAL2 and XTAL1 from the MCU.
  • Reset Pin: This is pulled up with a 10K resistor to help prevent spurious resets in noisy environments; the pin has an internal pull-up resistor, but according to the AVR Hardware Design Considerations application note (AVR042), “if the environment is noisy, it can be insufficient and reset may occur sporadically.” Reset occurs if the user presses the reset button or if a reset is issued from the USB bridge. You can also see the D2 diode. The role of this diode is described in the same app note: “If not using High Voltage Programming it is recommended to add an ESD protection diode from RESET to Vcc,  since this is not internally provided due to High Voltage Programming”.
  • C4 and C6 100nF Capacitors: These are added to filter supply noise. The impedance of a capacitor decreases with frequency: