Arduino UNO
Arduino UNO
Arduino UNO
The Arduino UNO is a popular microcontroller board based on the ATmega328P. It is widely used for
various electronics projects and prototyping. Here are some key features and specifications:
Microcontroller: ATmega328P
Operating Voltage: 5V
Digital I/O Pins: 14 (of which 6 can provide PWM output)
Analog Input Pins: 6
Flash Memory: 32 KB (ATmega328P) of which 0.5 KB is used by the bootloader
SRAM: 2 KB (ATmega328P)
EEPROM: 1 KB (ATmega328P)
Clock Speed: 16 MHz
The Arduino UNO is part of the Arduino family of boards and is known for its ease of use and
large community support. It can be programmed using the Arduino Integrated Development Environment
(IDE), which is available for Windows, mac OS, and Linux. The board is often used in educational
settings, hobbyist projects, and even some professional applications due to its simplicity and versatility.
Hardware Overview
1. Microcontroller: The heart of the Arduino UNO is the ATmega328P microcontroller, which
includes all the necessary components to operate and interface with various peripherals.
2. Digital I/O Pins: There are 14 digital input/output pins (D0 to D13), six of which can be used as
PWM outputs (pins 3, 5, 6, 9, 10, and 11).
3. Analog Input Pins: There are 6 analog inputs (A0 to A5), each providing 10 bits of resolution
(i.e., 1024 different values).
4. Power Jack: The board can be powered via a USB connection or with an external power supply.
The power source is selected automatically.
5. Reset Button: Allows you to reset the board manually.
6. USB Connection: Used for power, programming, and serial communication with the computer.
Communication
Serial Communication: The UNO has a serial communication interface (UART) via digital pins
0 (RX) and 1 (TX). It also supports serial communication over USB, which is handled by the
ATmega16U2 (on newer boards) acting as a USB-to-serial converter.
I2C Communication: The board includes I2C (Inter-Integrated Circuit) communication on pins
A4 (SDA) and A5 (SCL).
SPI Communication: The board supports SPI (Serial Peripheral Interface) communication,
available on pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK).
Programming
Arduino IDE: The board is programmed using the Arduino IDE, which is based on the Processing
programming language. The environment is designed to introduce programming to artists and
other newcomers unfamiliar with software development.
Bootloader: The UNO comes with a pre-programmed bootloader that allows you to upload new
code without the use of an external hardware programmer. It communicates using the original
STK500 protocol.
Libraries: Arduino provides a vast collection of libraries to extend the functionality of the board,
making it easier to interface with sensors, motors, displays, and more.
Power
External Power Supply: The board can operate on an external supply of 6 to 20 volts. If supplied
with less than 7V, however, the 5V pin may supply less than five volts and the board may be
unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The
recommended range is 7 to 12 volts.
Battery Power: It is possible to power the board with a battery, for example, a 9V battery
connected to the GND and Vin pin headers.
Shields
Arduino shields are pre-built circuit boards that fit on top of the Arduino and provide additional
functionalities like motor control, GPS, Ethernet, and more. They follow a standardized form factor to
ensure compatibility with the UNO.
Atmega328p :
Power Supply Pins
1. VCC: Digital supply voltage. This is the main power supply voltage for the microcontroller.
2. GND: Ground. There are two ground pins, which are used to complete the electrical circuit.
3. AVCC: Supply voltage for the analog-to-digital converter (ADC). This pin should be connected
to VCC through a low-pass filter.
4. AREF: Analog reference. This pin is used as a reference voltage for the ADC.
Oscillator Pins
5. XTAL1: Input to the inverting oscillator amplifier. It connects to an external clock source.
6. XTAL2: Output from the inverting oscillator amplifier. It connects to an external clock source.
Reset Pin
7. RESET: Resets the microcontroller. This pin should be held low to reset the microcontroller.
8. PB0 - PB7 (Digital Pins 8-13): These pins are used for digital I/O and also serve special
functions.
o PB0 (ICP1/CLKO): Pin Change Interrupt 0, Timer/Counter1 input capture pin, Clock
output.
o PB1 (OC1A): Pin Change Interrupt 1, Timer/Counter1 output compare A match.
o PB2 (OC1B/SS): Pin Change Interrupt 2, Timer/Counter1 output compare B match, SPI
Slave Select.
o PB3 (OC2A/MOSI): Pin Change Interrupt 3, Timer/Counter2 output compare A match,
SPI Master Out Slave In.
o PB4 (MISO): Pin Change Interrupt 4, SPI Master In Slave Out.
o PB5 (SCK): Pin Change Interrupt 5, SPI Serial Clock.
o PB6 (TOSC1/XTAL1): Pin Change Interrupt 6, Oscillator pin 1.
o PB7 (TOSC2/XTAL2): Pin Change Interrupt 7, Oscillator pin 2.
14. PC0 - PC5 (Analog Pins 14-19): These pins are used for analog input and also serve special
functions.
21. PD0 - PD7 (Digital Pins 0-7): These pins are used for digital I/O and also serve special
functions.
Miscellaneous Pins
27. PC6 (RESET): Reset pin. This can be configured as a general-purpose I/O pin.
28. AVCC: Analog supply voltage. Connect this to VCC.
Special Functions
PWM (Pulse Width Modulation): Some pins can output PWM signals.
ADC (Analog-to-Digital Converter): Converts analog signals to digital values.
USART (Universal Synchronous/Asynchronous Receiver/Transmitter): For serial
communication.
SPI (Serial Peripheral Interface): For high-speed synchronous data transfer.
I2C (Inter-Integrated Circuit): For communication with other I2C devices.
Timers/Counters: Used for time-related functions and generating precise events.
1. Core Architecture
8-bit RISC (Reduced Instruction Set Computing): The ATmega328P uses an 8-bit
architecture, meaning it processes 8 bits of data at a time. RISC architecture allows for a
simplified instruction set, which can lead to faster instruction execution.
2. Memory
Flash Memory: 32 KB for storing the program code. 512 bytes are used for the bootloader,
leaving 31.5 KB for application code.
SRAM (Static RAM): 2 KB for storing variables and data structures used during program
execution.
EEPROM (Electrically Erasable Programmable Read-Only Memory): 1 KB for storing non-
volatile data that must be preserved between power cycles.
3. Clock System
Clock Speed: Up to 20 MHz with an external clock. Typically runs at 16 MHz on the Arduino
UNO.
Clock Sources: Can use an internal RC oscillator or an external crystal oscillator.
4. I/O Ports
Port B, Port C, and Port D: Each port has 8 pins, providing a total of 23 general-purpose I/O
pins. These can be configured as input or output.
5. Timers/Counters
Communication: Used for high-speed synchronous data transfer between the microcontroller
and peripherals.
SPI Pins: MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Serial Clock), and
SS (Slave Select).
10. Interrupts
Sleep Modes: Various sleep modes (Idle, ADC Noise Reduction, Power-save, Power-down,
Standby, and Extended Standby) to reduce power consumption.
Brown-out Detection: Detects low voltage conditions to reset the microcontroller and prevent
erratic operation.
Watchdog Timer: A separate on-chip oscillator that can reset the microcontroller if it fails to
operate properly.
Analog Comparator: Compares two voltages and provides a digital output.
Pin Configuration