.. _arduino_uno_click:

Arduino UNO click shield
########################

Overview
********

The Arduino UNO click is an extension to the Arduino UNO R3 headers.
It's a simple shield that converts Arduino UNO R3 headers to two mikroBUS
host sockets that allow you to connect many other click shields to your
board.
In other words, the Arduino UNO click will generally be used by other
shields using the mikroBUS interface.

Two mikroBUS headers are exposed by the overlay: ``mikrobus_header_1`` and
``mikrobus_header_2``, each corresponding to a socket on the Arduino UNO
click shield.

The first socket (``mikrobus_header_1``) is the default socket which is
assigned the node label ``mikrobus_header`` in the overlay.

More information about the shield can be found at
`Arduino UNO click shield website`_.

Requirements
************

This shield can only be used with a board which provides a configuration
for Arduino R3 connector.

The board must also define node aliases for arduino Serial,
SPI and I2C interfaces (see :ref:`shields` for more details).

Connecting shields should use the first socket (``mikrobus_header_1``). This
socket is assigned the ``mikrobus_header`` node label.

Programming
***********

Include ``-DSHIELD=arduino_uno_click`` when you invoke ``west build`` with
other mikroBUS shields. For example:

.. zephyr-app-commands::
   :zephyr-app: samples/net/sockets/echo_server
   :host-os: unix
   :board: sam_v71_xult
   :gen-args: -DOVERLAY_CONFIG=overlay-802154.conf
   :shield: "arduino_uno_click atmel_rf2xx_mikrobus"
   :goals: build

References
**********

.. target-notes::

.. _Arduino UNO click shield website:
   https://www.mikroe.com/arduino-uno-click-shield
