HiPi::Wiring
This module is a thin wrapper around the excellent WiringPi library by Gordon Henderson. You can see full description and examples of using the library at:
https://projects.drogon.net/raspberry-pi/wiringpi/
The HiPi::Wiring module is built against the installed distribution of wiringpi from the standard Raspbian repositories.
Exported Constants
use HiPi::Wiring qw( :wiring );
The following constants are exported by this module under the :wiring tag
tag :wiring
WPI_NUM_PINS
WPI_MODE_PINS
WPI_MODE_GPIO
WPI_MODE_GPIO_SYS
WPI_MODE_PIFACE
WPI_INPUT
WPI_OUTPUT
WPI_PWM_OUTPUT
WPI_LOW
WPI_HIGH
WPI_PUD_OFF
WPI_PUD_DOWN
WPI_PUD_UP
WPI_PWM_MODE_MS
WPI_PWM_MODE_BAL
WPI_NES_RIGHT
WPI_NES_LEFT
WPI_NES_DOWN
WPI_NES_UP
WPI_NES_START
WPI_NES_SELECT
WPI_NES_B
WPI_NES_A
You can also import constants for 'wiringPi' pin numbers from the main
Constant module. These map 'Wiring' pin numbers to the BCM pin number
equivalent.
e.g. WPI_PIN_1 maps to GPIO_18 or Raspberry Pi pin 12.
use HiPi::Constant qw( :wiring );
imports:
WPI_PIN_0
WPI_PIN_1
WPI_PIN_2
WPI_PIN_3
WPI_PIN_4
WPI_PIN_5
WPI_PIN_6
WPI_PIN_7
WPI_PIN_8
WPI_PIN_9
WPI_PIN_10
WPI_PIN_11
WPI_PIN_12
WPI_PIN_13
WPI_PIN_14
WPI_PIN_15
WPI_PIN_16
WPI_PIN_17
WPI_PIN_18
WPI_PIN_19
WPI_PIN_20
WPI_PIN_21
WPI_PIN_22
WPI_PIN_23
WPI_PIN_24
WPI_PIN_25
WPI_PIN_26
WPI_PIN_27
WPI_PIN_28
WPI_PIN_29
WPI_PIN_30
WPI_PIN_31
Wrapped Methods from the WiringPi Libary
HiPi::Wiring::wiringPiSetup()
HiPi::Wiring::wiringPiSetupSys()
HiPi::Wiring::wiringPiSetupGpio()
HiPi::Wiring::wiringPiSetupPiFace()
HiPi::Wiring::piBoardRev()
HiPi::Wiring::wpiPinToGpio(wpiPin)
HiPi::Wiring::wpiPin()
HiPi::Wiring::wiringPiSetupPiFaceForGpioProg()
HiPi::Wiring::pinMode(pin, mode)
HiPi::Wiring::pullUpDnControl(pin, pud)
HiPi::Wiring::digitalWrite(pin, value)
HiPi::Wiring::digitalWriteByte(value)
HiPi::Wiring::pwmWrite(pin, value)
HiPi::Wiring::setPadDrive(group, value)
HiPi::Wiring::digitalRead(pin)
HiPi::Wiring::delayMicroseconds(howLong)
HiPi::Wiring::pwmSetMode(mode)
HiPi::Wiring::pwmSetRange(range)
HiPi::Wiring::pwmSetClock(divisor)
HiPi::Wiring::waitForInterrupt(pin, mS)
HiPi::Wiring::piLock(key)
HiPi::Wiring::piUnlock(key)
HiPi::Wiring::piHiPri(pri)
HiPi::Wiring::delay(howLong)
HiPi::Wiring::millis()
HiPi::Wiring::gertboardAnalogWrite(chan, value)
HiPi::Wiring::gertboardAnalogRead(chan)
HiPi::Wiring::gertboardSPISetup()
HiPi::Wiring::lcdHome(fd)
HiPi::Wiring::lcdClear(fd)
HiPi::Wiring::lcdPosition(fd, x, y)
HiPi::Wiring::lcdPutchar(fd, data)
HiPi::Wiring::lcdPuts(fd, putstring)
HiPi::Wiring::lcdInit (rows, cols, bits, rs, strb, d0, d1, d2, d3, d4, d5, d6, d7)
HiPi::Wiring::setupNesJoystick (dPin, cPin, lPin)
HiPi::Wiring::readNesJoystick (joystick)
HiPi::Wiring::softPwmCreate(pin, value, range)
HiPi::Wiring::softPwmWrite(pin, value)
HiPi::Wiring::softServoWrite(pin, value)
HiPi::Wiring::softServoSetup(p0, p1, p2, p3, p4, p5, p6, p7)
HiPi::Wiring::softToneCreate(pin)
HiPi::Wiring::softToneWrite(pin, frewq)
HiPi::Wiring::wiringPiI2CRead(fd)
HiPi::Wiring::wiringPiI2CReadReg8(fd, reg)
HiPi::Wiring::wiringPiI2CReadReg16(fd, reg)
HiPi::Wiring::wiringPiI2CWrite(fd, data)
HiPi::Wiring::wiringPiI2CWriteReg8(fd, reg, data)
HiPi::Wiring::wiringPiI2CWriteReg16(fd, reg, data)
HiPi::Wiring::wiringPiI2CSetup(devId)
HiPi::Wiring::wiringPiSPIGetFd(channel)
HiPi::Wiring::wiringPiSPIDataRW(channel, data, len)
HiPi::Wiring::wiringPiSPISetup(channel, speed)
HiPi::Wiring::serialOpen(device, baud)
HiPi::Wiring::serialClose(fd)
HiPi::Wiring::serialFlush(fd)
HiPi::Wiring::serialPutchar(fd, c)
HiPi::Wiring::serialPuts(fd, s)
HiPi::Wiring::serialDataAvail(fd)
HiPi::Wiring::serialGetchar(fd)
HiPi::Wiring::shiftIn(dPin, cPin, order)
HiPi::Wiring::shiftOut(dPin, cPin, order, val)
WiringPi Methods not wrapped
wiringPiISR(int pin, int mode, void (*function)(void)) piThreadCreate (void *(*fn)(void *))
The wiringPi library offers the above functions to C programmers for the automatic creation of threads when polling for interrupts. In Perl it would be better to implement your own interrupt handling using a combination of 'select', IO::Poll and the Perl threads module if desired. In many application designs 'select' or IO::Poll may be all that you need
serialPrintf(int fd, char *message, ...) lcdPrintf(int fd, char *message, ...)
The *Printf functions are not implemented. Use sprintf to format strings in Perl before passing to the appropriate wiringPi function.