﻿ .. note::

    Hello, welcome to the SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebook! Dive deeper into Raspberry Pi, Arduino, and ESP32 with fellow enthusiasts.

    **Why Join?**

    - **Expert Support**: Solve post-sale issues and technical challenges with help from our community and team.
    - **Learn & Share**: Exchange tips and tutorials to enhance your skills.
    - **Exclusive Previews**: Get early access to new product announcements and sneak peeks.
    - **Special Discounts**: Enjoy exclusive discounts on our newest products.
    - **Festive Promotions and Giveaways**: Take part in giveaways and holiday promotions.

    👉 Ready to explore and create with us? Click [|link_sf_facebook|] and join today!

.. _class_pin:

class ``Pin``
===========================

**Example**

.. code-block:: python
    
    # Import Pin class
    from robot_hat import Pin

    # Create Pin object with numeric pin numbering and default input pullup enabled
    d0 = Pin(0, Pin.IN, Pin.PULL_UP)
    # Create Pin object with named pin numbering
    d1 = Pin('D1')

    # read value
    value0 = d0.value()
    value1 = d1.value()
    print(value0, value1)

    # write value
    d0.value(1) # force input to output
    d1.value(0)

    # set pin high/low
    d0.high()
    d1.off()

    # set interrupt
    led = Pin('LED', Pin.OUT)
    switch = Pin('SW', Pin.IN, Pin.PULL_DOWN)
    def onPressed(chn):
        led.value(not switch.value())
    switch.irq(handler=onPressed, trigger=Pin.IRQ_RISING_FALLING)

**API**

.. currentmodule:: robot_hat

.. autoclass:: Pin
    :show-inheritance:
    :special-members: __init__, __call__
    :members: