NAME

RPi::WiringPi::Pin - Access and manipulate Raspberry Pi GPIO pins

SYNOPSIS

use RPi::WiringPi::Pin;
use RPi::Constant qw(:all);

my $pin = RPi::WiringPi::Pin->new(5);

$pin->setup;

$pin->mode(INPUT);
$pin->write(LOW);

$pin->set_interrupt(EDGE_RISING, 'pin5_interrupt_handler');

my $num = $pin->num;
my $mode = $pin->mode;
my $state = $pin->read;

print "pin number $num is in mode $mode with state $state\n";

sub pin5_interrupt_handler {
    print "in interrupt handler\n";
}

DESCRIPTION

An object that represents a physical GPIO pin.

Using the pin object's methods, the GPIO pins can be controlled and monitored.

Using this module outside of the base RPi::WiringPi object requires you to run one of the WiringPi::API's setup* methods.

METHODS

new($pin_num)

Takes the number representing the Pi's GPIO pin you want to use, and returns an object for that pin.

Parameters:

$pin_num

Mandatory.

Mandatory: The pin number to attach to.

mode($mode)

Puts the GPIO pin into either INPUT or OUTPUT mode. If $mode is not sent in, we'll return the pin's current mode.

Parameters:

$mode

Optional: If not sent in, we'll simply return the current mode of the pin. Otherwise, send in: 0 for INPUT, 1 for OUTPUT, 2 for PWM_OUT and 3 for GPIO_CLOCK (clock) mode.

read()

Returns 1 if the pin is HIGH (on) and 0 if the pin is LOW (off).

write($state)

For pins in OUTPUT mode, will turn on (HIGH) the pin, or off (LOW).

Parameters:

$state

Send in 1 to turn the pin on, and 0 to turn it off.

pull($direction)

Used to set the internal pull-up or pull-down resistor for a pin.

Parameter:

$direction

Mandatory: 2 for UP, 1 for DOWN and 0 to turn off the resistor.

interrupt_set($edge, $callback)

Listen for an interrupt on a pin, and do something if it is triggered.

Parameters:

$edge

Mandatory: 1 (falling), 2 (rising), or 3 for both.

$callback

The string name of a Perl subroutine that you've already written within your code. This is the interrupt handler. When an interrupt is triggered, the code in this subroutine will run.

interrupt_unset()

Removes an interrupt from the pin, if set.

pwm($value)

Sets the level of the Pulse Width Modulation (PWM) of the pin. Dies if the pin's mode() is not set to PWM (2).

Parameter:

$value

Mandatory: values range from 0-1023. 0 for 0% (off) and 1023 for 100% (fully on).

num()

Returns the pin number associated with the pin object.

SEE ALSO

AUTHOR

Steve Bertrand, <steveb@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2016 by Steve Bertrand

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.18.2 or, at your option, any later version of Perl 5 you may have available.