<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Arun Rawat</title>
    <description>The latest articles on DEV Community by Arun Rawat (@controllerstech).</description>
    <link>https://dev.to/controllerstech</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4206907%2F5b97f941-5964-487c-965e-9abd6ac9e543.jpg</url>
      <title>DEV Community: Arun Rawat</title>
      <link>https://dev.to/controllerstech</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/controllerstech"/>
    <language>en</language>
    <item>
      <title>Arduino UNO Pinout Tutorial</title>
      <dc:creator>Arun Rawat</dc:creator>
      <pubDate>Sun, 25 Oct 2026 17:17:56 +0000</pubDate>
      <link>https://dev.to/controllerstech/arduino-uno-pinout-tutorial-29lj</link>
      <guid>https://dev.to/controllerstech/arduino-uno-pinout-tutorial-29lj</guid>
      <description>&lt;p&gt;The Arduino UNO has 14 digital pins, 6 analog pins and a power header, and many of them serve more than one purpose. A pin that works as a plain input in one sketch can also act as a PWM output, a serial line or an interrupt source in another sketch. Knowing which function belongs to which pin helps you avoid wiring mistakes before they cost you an evening of debugging.&lt;/p&gt;

&lt;p&gt;This guide covers every pin on the Arduino UNO in the order you will meet them on the board. For each group of pins, we explain what the pins do, how to use them in a sketch, and which electrical limits you need to respect. A diagram at the start and a full reference table at the end are included, so you can use the page both for learning and for quick lookups later.&lt;/p&gt;

&lt;p&gt;If you also own a smaller board, the &lt;a href="https://controllerstech.com/arduino-nano-pinout/" rel="noopener noreferrer"&gt;Arduino Nano pinout guide&lt;/a&gt; shows how closely it matches the UNO. When you are ready to write code for these pins, the &lt;a href="https://controllerstech.com/arduino/core-tutorials/" rel="noopener noreferrer"&gt;Arduino Core Tutorials&lt;/a&gt; cover GPIO, ADC, UART, I2C, SPI, PWM and interrupts with working examples.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6lrn4lqklrrmq4j1k35x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6lrn4lqklrrmq4j1k35x.png" alt=" " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Arduino UNO Specifications
&lt;/h2&gt;

&lt;p&gt;The Arduino UNO is a microcontroller board built around the ATmega328P chip, which runs at 16 MHz. It provides digital input and output, analog input, PWM output and three serial interfaces, which is enough for most small embedded projects. The board is inexpensive and widely supported, so it remains a common first board for people learning embedded programming.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fodwwjsfegv2h9bp5pekp.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fodwwjsfegv2h9bp5pekp.webp" alt="Arduino UNO board top view showing all major components" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Microcontroller&lt;/td&gt;
&lt;td&gt;ATmega328P&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clock speed&lt;/td&gt;
&lt;td&gt;16 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flash memory&lt;/td&gt;
&lt;td&gt;32 KB (0.5 KB used by the bootloader)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SRAM&lt;/td&gt;
&lt;td&gt;2 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EEPROM&lt;/td&gt;
&lt;td&gt;1 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operating voltage&lt;/td&gt;
&lt;td&gt;5 V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input voltage (VIN and DC jack)&lt;/td&gt;
&lt;td&gt;7 V to 12 V recommended, 6 V to 20 V limits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Digital I/O pins&lt;/td&gt;
&lt;td&gt;14 (6 support PWM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analog input pins&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum current per I/O pin&lt;/td&gt;
&lt;td&gt;40 mA absolute maximum, 20 mA recommended&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB connector&lt;/td&gt;
&lt;td&gt;Type-B&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Arduino UNO Pinout Diagram
&lt;/h2&gt;

&lt;p&gt;The diagram below shows the complete pinout of the Arduino UNO. It is useful to keep it open in a second tab while you read the sections that follow, because each section refers to pins by the same labels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftug7vb1w8yx55x6aj944.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftug7vb1w8yx55x6aj944.webp" alt="Arduino UNO pinout diagram with power, digital, PWM, analog, UART, I2C and SPI pins labeled" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7uy5iedsp0b47rjraf47.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7uy5iedsp0b47rjraf47.webp" alt="ATmega328P chip pinout mapped to the matching Arduino UNO pin numbers" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pins fall into four main groups, and the rest of this guide follows the same order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The power pins supply the board and any external components that you connect to it.&lt;/li&gt;
&lt;li&gt;The digital I/O pins read and write HIGH and LOW signals.&lt;/li&gt;
&lt;li&gt;The analog pins measure voltages between 0 V and 5 V.&lt;/li&gt;
&lt;li&gt;The communication pins carry UART, I2C and SPI traffic to other devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Arduino UNO Power Pins
&lt;/h2&gt;

&lt;p&gt;The power header sits on the lower left side of the board. These pins let you feed power into the Arduino and also let you draw power for sensors and modules.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F891of3gu75jstqhunqjt.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F891of3gu75jstqhunqjt.webp" alt="Arduino UNO power header close-up showing the IOREF, RESET, 3.3V, 5V, GND and VIN pins" width="601" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  VIN Pin
&lt;/h3&gt;

&lt;p&gt;VIN stands for voltage input, and it accepts an external supply that feeds the onboard regulator. The board tolerates 6 V to 20 V, and the recommended range is 7 V to 12 V. A supply near 7 V to 9 V keeps the regulator cooler, because the regulator turns every extra volt into heat. A battery pack or a wall adapter is the usual source for this pin.&lt;/p&gt;

&lt;h3&gt;
  
  
  5V Pin
&lt;/h3&gt;

&lt;p&gt;The 5V pin carries the regulated 5 V rail of the board. You can use it to power sensors and modules that need 5 V. The total current is limited by the source of the board, which is about 500 mA from USB and less from a high-voltage supply on VIN because of regulator heat.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3V Pin
&lt;/h3&gt;

&lt;p&gt;The 3.3V pin provides a regulated 3.3 V output for parts that cannot tolerate 5 V, such as some Wi-Fi chips, Bluetooth modules and sensors. This pin can supply only about 50 mA, so it is suitable for small modules and not for anything that draws more current.&lt;/p&gt;

&lt;h3&gt;
  
  
  GND Pins
&lt;/h3&gt;

&lt;p&gt;The UNO has three GND pins, and all of them are connected together inside the board, so you can use any one of them. An external module must share its ground with the Arduino, because the signals between the two devices are measured against that common reference. Without a shared ground, the readings become unreliable.&lt;/p&gt;

&lt;h3&gt;
  
  
  RESET Pin
&lt;/h3&gt;

&lt;p&gt;Pulling the RESET pin LOW restarts the microcontroller in the same way as the reset button on the board. Other circuits use this pin when they need to restart the Arduino from outside, and shields often route their own reset button to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  IOREF Pin
&lt;/h3&gt;

&lt;p&gt;The IOREF pin reports the voltage at which the I/O pins operate, which is 5 V on the UNO. Shields read this pin to find out whether the board uses 5 V or 3.3 V logic, so that they can adjust their own circuits. Most personal projects never need to connect to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd12fu4qutvtgfdafyoep.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd12fu4qutvtgfdafyoep.webp" alt="Arduino UNO with the DC jack, VIN pin and USB port marked as the three ways to supply power" width="700" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Power Pin Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Avoid connecting several power sources at once, since USB and an external supply on VIN can conflict with each other.&lt;/li&gt;
&lt;li&gt;Keep the VIN voltage between 7 V and 9 V when you want the regulator to stay cool.&lt;/li&gt;
&lt;li&gt;Connect the ground of every external circuit to a GND pin of the Arduino.&lt;/li&gt;
&lt;li&gt;Do not draw more than 50 mA from the 3.3V pin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Arduino UNO Digital Pins
&lt;/h2&gt;

&lt;p&gt;The Arduino UNO has 14 digital pins, labeled D0 to D13. They handle most everyday tasks, such as driving LEDs, reading buttons and switching relay modules. Many single-wire parts also need only one digital pin, including the &lt;a href="https://controllerstech.com/interface-dht11-dht22-with-arduino/" rel="noopener noreferrer"&gt;DHT11 and DHT22 sensors&lt;/a&gt;, the &lt;a href="https://controllerstech.com/ds18b20-arduino-tutorial-single-multiple-sensors-oled/" rel="noopener noreferrer"&gt;DS18B20 temperature sensor&lt;/a&gt;, the &lt;a href="https://controllerstech.com/pir-sensor-arduino-tutorial/" rel="noopener noreferrer"&gt;PIR motion sensor&lt;/a&gt;, the &lt;a href="https://controllerstech.com/ir-sensor-interfacing-arduino/" rel="noopener noreferrer"&gt;IR sensor&lt;/a&gt; and the &lt;a href="https://controllerstech.com/ws2812-arduino-tutorial-neopixel-ring/" rel="noopener noreferrer"&gt;WS2812 LED ring&lt;/a&gt;. The functions &lt;code&gt;digitalWrite()&lt;/code&gt; and &lt;code&gt;digitalRead()&lt;/code&gt; control them, and the &lt;a href="https://controllerstech.com/arduino-digitalwrite-and-digitalread-tutorial/" rel="noopener noreferrer"&gt;digitalRead() and digitalWrite() tutorial&lt;/a&gt; explains both in detail.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdh59sgs26f0v8glh0mdn.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdh59sgs26f0v8glh0mdn.webp" alt="Arduino UNO digital header with pins D0 to D13 highlighted" width="650" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How Digital Pins Work
&lt;/h3&gt;

&lt;p&gt;Each digital pin works as an input or an output, depending on the mode that you set with &lt;code&gt;pinMode()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;OUTPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In output mode, a HIGH pin drives 5 V and a LOW pin drives 0 V. In input mode, the ATmega328P reads a voltage above about 3 V as HIGH and a voltage below about 1.5 V as LOW. A voltage between those two levels gives an unreliable result, so an input should never be left floating. A pull-up or pull-down resistor, or the internal pull-up enabled with &lt;code&gt;INPUT_PULLUP&lt;/code&gt;, keeps the pin at a defined level.&lt;/p&gt;

&lt;p&gt;The absolute maximum current of a pin is 40 mA, but this value is a limit and not a design target. A current of 20 mA or less is a safe working value, and the total current through all I/O pins together should stay below 200 mA.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pin 13 and the Built-in LED
&lt;/h3&gt;

&lt;p&gt;Pin 13 connects to the LED labeled L on the board, which is why most blink examples use it. The LED and its series resistor load the pin, so pin 13 behaves less cleanly as an input than the other pins. For that reason, it is better to use a different pin when you need a digital input.&lt;/p&gt;

&lt;h3&gt;
  
  
  Digital Pin Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Call &lt;code&gt;pinMode()&lt;/code&gt; for a pin before you use it.&lt;/li&gt;
&lt;li&gt;Add a resistor of 220 Ω to 330 Ω in series with every LED.&lt;/li&gt;
&lt;li&gt;Use a transistor, MOSFET or relay module for motors and other heavy loads, because a pin cannot supply that much current.&lt;/li&gt;
&lt;li&gt;Avoid pin 13 as an input, because of the onboard LED circuit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Arduino UNO PWM Pins
&lt;/h2&gt;

&lt;p&gt;Six of the digital pins can produce PWM (pulse width modulation) signals, and the board marks them with a tilde (~) symbol. These pins are 3, 5, 6, 9, 10 and 11. PWM switches a pin between HIGH and LOW very quickly, and the share of time spent HIGH (the duty cycle) sets the average output level. This is the standard way to dim an LED or control the speed of a small motor through a driver. The &lt;a href="https://controllerstech.com/arduino-passive-buzzer-tutorial/" rel="noopener noreferrer"&gt;passive buzzer tutorial&lt;/a&gt; shows another use of timer-generated signals on these pins. The &lt;a href="https://controllerstech.com/arduino-pwm-analogwrite-tutorial/" rel="noopener noreferrer"&gt;Arduino PWM and analogWrite() tutorial&lt;/a&gt; shows complete examples.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9furb18b80282md7ruv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9furb18b80282md7ruv.webp" alt="Arduino UNO PWM pins 3, 5, 6, 9, 10 and 11 marked with a tilde on the digital header" width="799" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;analogWrite()&lt;/code&gt; function accepts a value from 0 to 255, where 0 keeps the pin LOW at all times and 255 keeps it HIGH at all times. The resolution is 8 bits, which gives 256 steps.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;PWM pin&lt;/th&gt;
&lt;th&gt;Timer&lt;/th&gt;
&lt;th&gt;Default frequency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Timer2&lt;/td&gt;
&lt;td&gt;about 490 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Timer0&lt;/td&gt;
&lt;td&gt;about 980 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Timer0&lt;/td&gt;
&lt;td&gt;about 980 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Timer1&lt;/td&gt;
&lt;td&gt;about 490 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Timer1&lt;/td&gt;
&lt;td&gt;about 490 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Timer2&lt;/td&gt;
&lt;td&gt;about 490 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The PWM pins also work as ordinary digital pins, because PWM becomes active only when you call &lt;code&gt;analogWrite()&lt;/code&gt; on them. Pins that share a timer also share its settings, so a change to one timer affects both of its pins. Timer0 additionally drives &lt;code&gt;millis()&lt;/code&gt; and &lt;code&gt;delay()&lt;/code&gt;, which means that changes to Timer0 affect the timing functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arduino UNO Interrupt Pins
&lt;/h2&gt;

&lt;p&gt;An interrupt lets the microcontroller pause its normal program and run a short function as soon as a pin changes state. This approach is more efficient than checking a pin repeatedly inside &lt;code&gt;loop()&lt;/code&gt;, and it is often the only dependable way to catch short pulses.&lt;/p&gt;

&lt;h3&gt;
  
  
  External Interrupts on Pins 2 and 3
&lt;/h3&gt;

&lt;p&gt;The UNO has two dedicated external interrupt pins. INT0 is on digital pin 2, and INT1 is on digital pin 3. You attach a handler with &lt;code&gt;attachInterrupt()&lt;/code&gt;, and each pin has its own interrupt vector. The &lt;a href="https://controllerstech.com/arduino-external-interrupts-tutorial/" rel="noopener noreferrer"&gt;Arduino external interrupts tutorial&lt;/a&gt; walks through the setup. If you plan to combine interrupts with a task scheduler, the guide on &lt;a href="https://controllerstech.com/arduino-freertos-semaphore-interrupt/" rel="noopener noreferrer"&gt;using interrupts with FreeRTOS on Arduino&lt;/a&gt; covers that case.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftx1nkh0n99u2rent1vcn.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftx1nkh0n99u2rent1vcn.webp" alt="Arduino UNO digital pins D2 and D3 highlighted as the external interrupt pins INT0 and INT1" width="799" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The interrupt can be set to one of four trigger modes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RISING triggers when the pin goes from LOW to HIGH.&lt;/li&gt;
&lt;li&gt;FALLING triggers when the pin goes from HIGH to LOW.&lt;/li&gt;
&lt;li&gt;CHANGE triggers on any change of state.&lt;/li&gt;
&lt;li&gt;LOW triggers continuously while the pin stays LOW.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pin Change Interrupts
&lt;/h3&gt;

&lt;p&gt;Every I/O pin of the UNO can generate a pin change interrupt (PCINT), which makes this feature useful when two interrupt pins are not enough. The pins are grouped by port, and each port shares a single interrupt vector. When the interrupt fires, your code has to read the pins and work out which one changed.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;External interrupts (INT0, INT1)&lt;/th&gt;
&lt;th&gt;Pin change interrupts (PCINT)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Available pins&lt;/td&gt;
&lt;td&gt;D2 and D3 only&lt;/td&gt;
&lt;td&gt;All digital and analog pins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Separate handler per pin&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No, one handler per port&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trigger modes&lt;/td&gt;
&lt;td&gt;RISING, FALLING, CHANGE, LOW&lt;/td&gt;
&lt;td&gt;CHANGE only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ease of use&lt;/td&gt;
&lt;td&gt;Simple&lt;/td&gt;
&lt;td&gt;Requires manual pin checks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pins 2 and 3 are the better choice whenever they are free, and pin change interrupts are the fallback when you need more sources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arduino UNO Analog Pins
&lt;/h2&gt;

&lt;p&gt;The UNO has six analog input pins, labeled A0 to A5, on the lower header of the board. They connect to the 10-bit ADC (analog-to-digital converter) of the ATmega328P, and &lt;code&gt;analogRead()&lt;/code&gt; returns a value from 0 to 1023.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faofihggcwi5zbar81hf2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faofihggcwi5zbar81hf2.webp" alt="Arduino UNO analog input header showing pins A0 to A5" width="799" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How Analog Input Works
&lt;/h3&gt;

&lt;p&gt;The ADC compares the input voltage with a reference voltage and returns a proportional number.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ADC value = (input voltage / reference voltage) × 1023
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The default reference is 5 V, so an input of 2.5 V gives a reading of about 511. Each step represents about 4.9 mV, which suits most sensors. The &lt;a href="https://controllerstech.com/gp2y0a41sk0f-arduino-tutorial/" rel="noopener noreferrer"&gt;GP2Y0A41SK0F distance sensor tutorial&lt;/a&gt; is a good example of a sensor that reports its reading as an analog voltage. The &lt;a href="https://controllerstech.com/arduino-analogread-adc-tutorial/" rel="noopener noreferrer"&gt;Arduino ADC and analogRead() tutorial&lt;/a&gt; covers sampling, averaging and conversion to real units.&lt;/p&gt;

&lt;h3&gt;
  
  
  AREF Pin
&lt;/h3&gt;

&lt;p&gt;The AREF pin lets you supply your own reference voltage to the ADC. If you apply 2.5 V to AREF and select the external reference in your code, the ADC range becomes 0 V to 2.5 V, and the same 1024 steps cover a smaller range. That gives finer resolution for small signals. The input voltage must stay below the reference voltage, otherwise the reading clips at 1023.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F79tl6xsaumisfagke3x0.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F79tl6xsaumisfagke3x0.webp" alt="Arduino UNO AREF pin highlighted next to the analog reference voltage input" width="700" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Call &lt;code&gt;analogReference(EXTERNAL)&lt;/code&gt; before you apply a voltage to AREF, because the board also has an internal reference connected to that pin, and connecting an external source without this call can damage the chip.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Analog Pins as Digital Pins
&lt;/h3&gt;

&lt;p&gt;Pins A0 to A5 also work as ordinary digital pins when you run out of regular ones. The same functions apply, and the pin names are valid in &lt;code&gt;pinMode()&lt;/code&gt;, &lt;code&gt;digitalWrite()&lt;/code&gt; and &lt;code&gt;digitalRead()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;A0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;OUTPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;A0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Analog Pin Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;analogRead()&lt;/code&gt; maps 0 V to 5 V onto the values 0 to 1023 by default.&lt;/li&gt;
&lt;li&gt;An analog pin must never receive more than 5 V.&lt;/li&gt;
&lt;li&gt;A lower AREF voltage improves resolution but reduces the usable input range.&lt;/li&gt;
&lt;li&gt;A floating analog input produces random readings, so connect it to a signal source or to a defined level.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Arduino UNO UART Pins
&lt;/h2&gt;

&lt;p&gt;The UNO has one hardware UART (universal asynchronous receiver-transmitter), and it uses digital pin 0 as RX (receive) and digital pin 1 as TX (transmit). The same lines connect to the USB-to-serial chip of the board, so the Serial Monitor on your computer shares them with anything that you wire to these pins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqgfouwsejfu8l58a7ht4.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqgfouwsejfu8l58a7ht4.webp" alt="Arduino UNO digital pins D0 (RX) and D1 (TX) highlighted for UART serial communication" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;UART is the standard interface for debug messages and for serial modules such as the HC-05 and HC-06 Bluetooth modules, the SIM800L and SIM900 GSM modules and the NEO-6M GPS module. Disconnect any wires from pins 0 and 1 before you upload a sketch, because the upload process uses the same lines and a connected module can make the upload fail. The &lt;a href="https://controllerstech.com/arduino-uart-tutorial/" rel="noopener noreferrer"&gt;Arduino UART tutorial&lt;/a&gt; explains how to send and receive data.&lt;/p&gt;

&lt;h3&gt;
  
  
  SoftwareSerial for a Second Serial Port
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;SoftwareSerial&lt;/code&gt; library creates an additional serial port on any two digital pins. It is a practical solution when a GPS or Bluetooth module needs a port while the hardware UART is busy with debug output. The library handles the timing in software, so it works reliably at 9600 baud and becomes less dependable at higher speeds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arduino UNO I2C Pins
&lt;/h2&gt;

&lt;p&gt;I2C (Inter-Integrated Circuit) connects several devices to the same two wires. On the UNO, SDA (data) is on analog pin A4, and SCL (clock) is on analog pin A5. Each device on the bus has its own 7-bit address, so the Arduino can talk to one device at a time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkt2nlvd1omoyu2xpzuuk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkt2nlvd1omoyu2xpzuuk.webp" alt="Arduino UNO analog pins A4 (SDA) and A5 (SCL) highlighted for I2C communication" width="500" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Common I2C devices include &lt;a href="https://controllerstech.com/arduino-ssd1306-oled-display-tutorial/" rel="noopener noreferrer"&gt;SSD1306 OLED displays&lt;/a&gt;, &lt;a href="https://controllerstech.com/ds3231-arduino-tutorial/" rel="noopener noreferrer"&gt;DS3231 real-time clock modules&lt;/a&gt;, &lt;a href="https://controllerstech.com/mpu6050-arduino-tutorial/" rel="noopener noreferrer"&gt;MPU-6050 motion sensors&lt;/a&gt;, &lt;a href="https://controllerstech.com/i2c-lcd1602-arduino-tutorial/" rel="noopener noreferrer"&gt;I2C LCD1602 displays&lt;/a&gt; and &lt;a href="https://controllerstech.com/at25c256-with-arduino-using-i2c/" rel="noopener noreferrer"&gt;external EEPROM chips&lt;/a&gt;. Temperature and humidity sensors such as the &lt;a href="https://controllerstech.com/arduino-bme280-tutorial/" rel="noopener noreferrer"&gt;BME280&lt;/a&gt; and the &lt;a href="https://controllerstech.com/interface-aht20-with-arduino/" rel="noopener noreferrer"&gt;AHT20&lt;/a&gt; also use this bus. The &lt;code&gt;Wire&lt;/code&gt; library handles the protocol, and the &lt;a href="https://controllerstech.com/arduino-i2c-tutorial-master-slave-scanner/" rel="noopener noreferrer"&gt;Arduino I2C tutorial&lt;/a&gt; shows how to scan the bus and read from a device. Once the I2C bus is in use, A4 and A5 are no longer available as analog inputs, so it helps to plan this when you assign pins at the start of a project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arduino UNO SPI Pins
&lt;/h2&gt;

&lt;p&gt;SPI (Serial Peripheral Interface) is the fastest of the three serial interfaces on the board, and it uses four lines.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MOSI (master out, slave in) is on pin 11.&lt;/li&gt;
&lt;li&gt;MISO (master in, slave out) is on pin 12.&lt;/li&gt;
&lt;li&gt;SCK (serial clock) is on pin 13.&lt;/li&gt;
&lt;li&gt;SS (slave select) is on pin 10.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgeofs1669wcispzfj1y8.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgeofs1669wcispzfj1y8.webp" alt="Arduino UNO SPI pins D10 (SS), D11 (MOSI), D12 (MISO) and D13 (SCK) highlighted" width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SPI suits devices that move a lot of data, such as &lt;a href="https://controllerstech.com/st7735-with-arduino-display-images-and-graphics/" rel="noopener noreferrer"&gt;ST7735 TFT displays&lt;/a&gt;, &lt;a href="https://controllerstech.com/interface-sd-card-with-arduino-using-spi/" rel="noopener noreferrer"&gt;SD card modules&lt;/a&gt;, &lt;a href="https://controllerstech.com/arduino-w25q-flash-memory/" rel="noopener noreferrer"&gt;W25Q flash memory chips&lt;/a&gt;, &lt;a href="https://controllerstech.com/ili9341-arduino-touchscreen-tutorial/" rel="noopener noreferrer"&gt;ILI9341 touchscreens&lt;/a&gt; and nRF24L01 radio modules. The master uses a separate chip-select line for each device, so a project with several SPI devices needs one extra digital pin per device. Pins 10 to 13 are occupied while SPI is active, and pin 13 also drives the onboard LED, which may flicker during transfers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arduino UNO Timer and Input Capture Pins
&lt;/h2&gt;

&lt;p&gt;Two more groups of pins connect directly to the timers inside the ATmega328P.&lt;/p&gt;

&lt;h3&gt;
  
  
  Timer Clock Input Pins T0 and T1
&lt;/h3&gt;

&lt;p&gt;Pin 4 is the T0 input, and pin 5 is the T1 input. Each one can feed an external clock signal to a hardware timer. By default, the timers count the internal 16 MHz clock, but with an external source they count the pulses on the pin instead. This feature is used for frequency counters, pulse counting from an encoder and similar measurements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndrdcykf16bg5ab8r5dr.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndrdcykf16bg5ab8r5dr.webp" alt="Arduino UNO digital pins D4 (T0) and D5 (T1) highlighted as timer external clock inputs" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For timing in your own sketches, the &lt;a href="https://controllerstech.com/arduino-microsecond-delay/" rel="noopener noreferrer"&gt;delayMicroseconds() tutorial&lt;/a&gt; shows how to create short and accurate delays.&lt;/p&gt;

&lt;h3&gt;
  
  
  Input Capture Pin ICP1
&lt;/h3&gt;

&lt;p&gt;Pin 8 is the input capture pin (ICP1) of Timer1. When a rising or falling edge appears on the pin, the hardware copies the current Timer1 value into a register without any help from the CPU. This gives a precise time stamp for events, and it is useful for measuring pulse width, motor speed from an encoder and the echo time of an ultrasonic sensor such as the &lt;a href="https://controllerstech.com/hc-sr04-arduino-tutorial-distance-serial-lcd/" rel="noopener noreferrer"&gt;HC-SR04&lt;/a&gt;. Most ultrasonic libraries use &lt;code&gt;pulseIn()&lt;/code&gt;, which blocks the program while it waits, whereas the input capture unit leaves the CPU free for other work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfxacdc325am1pe06f58.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfxacdc325am1pe06f58.webp" alt="Arduino UNO pin D8 highlighted as the ICP1 input capture pin of Timer1" width="799" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Arduino UNO Pinout Table
&lt;/h2&gt;

&lt;p&gt;The tables below list every pin of the UNO with its port on the ATmega328P, its PWM capability and its alternate functions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0iwd003hc9f39peiwrx.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0iwd003hc9f39peiwrx.webp" alt="Arduino UNO complete pinout reference chart with all pin groups color-coded" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Digital Pins
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Arduino pin&lt;/th&gt;
&lt;th&gt;ATmega328P port&lt;/th&gt;
&lt;th&gt;PWM&lt;/th&gt;
&lt;th&gt;Alternate function&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;D0&lt;/td&gt;
&lt;td&gt;PD0&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;RX&lt;/td&gt;
&lt;td&gt;UART receive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D1&lt;/td&gt;
&lt;td&gt;PD1&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;TX&lt;/td&gt;
&lt;td&gt;UART transmit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D2&lt;/td&gt;
&lt;td&gt;PD2&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;INT0&lt;/td&gt;
&lt;td&gt;External interrupt 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D3&lt;/td&gt;
&lt;td&gt;PD3&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;INT1&lt;/td&gt;
&lt;td&gt;External interrupt 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D4&lt;/td&gt;
&lt;td&gt;PD4&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;T0&lt;/td&gt;
&lt;td&gt;Timer0 external clock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D5&lt;/td&gt;
&lt;td&gt;PD5&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;T1&lt;/td&gt;
&lt;td&gt;Timer1 external clock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D6&lt;/td&gt;
&lt;td&gt;PD6&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;PWM output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D7&lt;/td&gt;
&lt;td&gt;PD7&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;General-purpose digital I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D8&lt;/td&gt;
&lt;td&gt;PB0&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;ICP1&lt;/td&gt;
&lt;td&gt;Input capture unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D9&lt;/td&gt;
&lt;td&gt;PB1&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;PWM output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D10&lt;/td&gt;
&lt;td&gt;PB2&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;SS&lt;/td&gt;
&lt;td&gt;SPI slave select&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D11&lt;/td&gt;
&lt;td&gt;PB3&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;MOSI&lt;/td&gt;
&lt;td&gt;SPI master out, slave in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D12&lt;/td&gt;
&lt;td&gt;PB4&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;MISO&lt;/td&gt;
&lt;td&gt;SPI master in, slave out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D13&lt;/td&gt;
&lt;td&gt;PB5&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;SCK, LED&lt;/td&gt;
&lt;td&gt;SPI clock and onboard LED&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Analog Pins
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Arduino pin&lt;/th&gt;
&lt;th&gt;ATmega328P port&lt;/th&gt;
&lt;th&gt;Alternate function&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A0&lt;/td&gt;
&lt;td&gt;PC0&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Analog input or digital I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A1&lt;/td&gt;
&lt;td&gt;PC1&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Analog input or digital I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A2&lt;/td&gt;
&lt;td&gt;PC2&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Analog input or digital I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A3&lt;/td&gt;
&lt;td&gt;PC3&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Analog input or digital I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A4&lt;/td&gt;
&lt;td&gt;PC4&lt;/td&gt;
&lt;td&gt;SDA&lt;/td&gt;
&lt;td&gt;I2C data, analog input or digital I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A5&lt;/td&gt;
&lt;td&gt;PC5&lt;/td&gt;
&lt;td&gt;SCL&lt;/td&gt;
&lt;td&gt;I2C clock, analog input or digital I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AREF&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;AREF&lt;/td&gt;
&lt;td&gt;External analog reference input&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Power Pins
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pin&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VIN&lt;/td&gt;
&lt;td&gt;External supply input, 7 V to 12 V recommended&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5V&lt;/td&gt;
&lt;td&gt;Regulated 5 V rail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.3V&lt;/td&gt;
&lt;td&gt;Regulated 3.3 V output, 50 mA maximum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GND&lt;/td&gt;
&lt;td&gt;Ground, three pins connected internally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RESET&lt;/td&gt;
&lt;td&gt;Pull LOW to restart the microcontroller&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IOREF&lt;/td&gt;
&lt;td&gt;I/O voltage reference for shields, 5 V on the UNO&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://controllerstech.com/arduino-uno-pinout/" rel="noopener noreferrer"&gt;controllerstech.com&lt;/a&gt;. Follow &lt;a href="https://www.youtube.com/@controllerstech" rel="noopener noreferrer"&gt;ControllersTech on YouTube&lt;/a&gt; and &lt;a href="https://www.github.com/controllerstech" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; for more embedded tutorials.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>testing</category>
      <category>learning</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
