RPi::WiringPi::Pin - Access and manipulate Raspberry Pi GPIO pins
use RPi::WiringPi::Pin; use RPi::Constant qw(:all); my $pin = RPi::WiringPi::Pin->new(5); $pin->setup_gpio; $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"; }
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.
setup*
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.
Puts the pin into either INPUT, OUTPUT, PWM_OUT or GPIO_CLOCK mode. If $mode is not sent in, we'll return the pin's current mode.
INPUT
OUTPUT
PWM_OUT
GPIO_CLOCK
$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 mode.
0
1
2
3
Returns 1 if the pin is HIGH (on) and 0 if the pin is LOW (off).
HIGH
LOW
For pins in OUTPUT mode, will turn HIGH (on) the pin, or LOW (off).
$state
Send in 1 to turn the pin on, and 0 to turn it off.
Used to set the internal pull-up or pull-down resistor for a pin. Calling this method on a pin will automatically set the pin to INPUT mode.
Parameter:
$direction
Mandatory: 2 for PUD_UP, 1 for PUD_DOWN and 0 for PUD_OFF (disabled the resistor).
PUD_UP
PUD_DOWN
PUD_OFF
Listen for an interrupt on a pin, and do something if it is triggered.
$edge
Mandatory: 1 for EDGE_FALLING, 2 for EDGE_RISING, or 3 for EDGE_BOTH.
EDGE_FALLING
EDGE_RISING
EDGE_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.
Sets the level of the Pulse Width Modulation (PWM) of the pin. Dies if the pin's mode() is not set to PWM (2). Note that only physical pin 12 (wiringPi pin 1, GPIO pin 18) is PWM hardware capable.
mode()
$value
Mandatory: values range from 0-1023. 0 for 0% (off) and 1023 for 100% (fully on).
1023
See "pwm_range-range" in RPi::WiringPi for details on how to modify the range to something other than 0-1023.
0-1023
Returns the pin number associated with the pin object.
Steve Bertrand, <steveb@cpan.org>
Copyright (C) 2017 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.
To install RPi::WiringPi, copy and paste the appropriate command in to your terminal.
cpanm
cpanm RPi::WiringPi
CPAN shell
perl -MCPAN -e shell install RPi::WiringPi
For more information on module installation, please visit the detailed CPAN module installation guide.