Raspberry Pi GPIO

The GpioPin5 class is a specialized controller designed specifically for the Raspberry Pi 5. It interacts directly with the new RP1 Southbridge architecture (Chip 4) to control General Purpose Input/Output (GPIO) pins.

Use this class when running your application on a Raspberry Pi 5 to read sensors, control LEDs, or interact with other hardware components. It includes software-based polling for detecting value changes (interrupts) and manages pin ownership to prevent conflicts.

You must create an instance of this class to control a specific pin.

Static Functions

isAccessible

Checks if the specific GPIO hardware (the RP1 chip used on Raspberry Pi 5) is present and accessible on the current system.

Output

Returns true if the system is a Raspberry Pi 5 with accessible GPIO, otherwise false.

getPinConsumer

Checks if a specific GPIO pin is currently being used by another process or driver, and if so, returns the name of that consumer.

Parameters

  • gpio: The GPIO pin number (BCM numbering).

Example

# gpio
17

Output

Returns the name of the consumer (e.g., 'GpioPin5', 'spi0') as a string, or null if the pin is free.

isPinFree

A convenience function to check if a specific GPIO pin is currently available for use.

Parameters

  • gpio: The GPIO pin number (BCM numbering).

Example

Output

Returns true if the pin is free, false if it is busy.

release

Forcefully releases a GPIO pin if it is currently held by an internal GpioPin5 instance. This is useful for cleaning up resources if a pin was not disposed of correctly.

Parameters

  • gpio: The GPIO pin number to release.

Example

Output

Returns true if the pin was found and released, false otherwise.

Constructor and Member Functions

create

Creates a new instance to control a specific GPIO pin. This initializes the pin with the specified direction and behavior settings.

Parameters

  • options: An object containing the configuration for the pin.

    • gpio: The GPIO pin number (BCM).

    • direction: How the pin should behave.

      • 'in': Input mode (for reading values).

      • 'out': Output mode (initialized to 0).

      • 'high': Output mode (initialized to 1).

      • 'low': Output mode (initialized to 0).

    • pullUpDown: Internal resistor configuration ('none', 'pullup', 'pulldown'). Note: On RPi 5, software control of bias is limited; system-level configuration is often required.

    • edge: For input pins, defines which changes trigger an event ('rising', 'falling', 'both'). Defaults to 'rising'.

    • debounceTimeout: Time in milliseconds to wait for the signal to stabilize. Defaults to 10.

    • activeLow: If true, inverts the logic (1 becomes 0, 0 becomes 1). Defaults to false.

    • pollInterval: The interval in milliseconds for checking the pin state. Defaults to 5.

Example 1: Configure an Output Pin (e.g., for an LED)

Example 2: Configure an Input Pin (e.g., for a Button)

Output

Returns a new GpioPin5 instance.

write

Asynchronously sets the value of an output pin.

Parameters

  • value: The value to write. Accepts 0, 1, true, or false.

Example

Output

Returns null (resolves the promise) when the write is complete.

read

Synchronously reads the current value of the pin.

Output

Returns 0 or 1.

onChange

Registers a listener to monitor the pin for changes. The listener is triggered when the pin's value changes according to the edge configuration set in the constructor.

Parameters

  • listener: The function to execute when the event occurs. The function receives the new value (0 or 1) as an argument.

Output

Returns the string 'subscribed'.

removeListeners

Removes all active listeners and stops the internal polling loop used to detect changes.

Returns true.

dispose

Releases the GPIO pin, freeing the hardware resource and cleaning up all internal listeners and timers.

Returns true.

Last updated