HiPi::Interface::PCF8574
This module provides an interface to the PCF8574 8 bit GPIO extender with I2C interface.
It uses HiPi::Device::I2C as a backend.
Methods
Create a new instance of the module class.
use HiPi qw( :rpi ); use HiPi::Interface::PCF8574; my $pcf = HiPi::Interface::PCF8574->new( devicename => '/dev/i2c-1', address => 0x3f, );
Read an array of 8 values ( 0 or 1 ) from the device.
bits are populated according to bit numbers as described in the PCF8574 documentation $bits[0] is populated from port 0 value $bits[7] is populated from port 7 value
Examples:
use HiPi qw( :rpi ); use HiPi::Interface::PCF8574; my $pcf = HiPi::Interface::PCF8574->new( devicename => '/dev/i2c-1', address => 0x27, );< # get the value ( 1 or 0 ) for port 3 my @bits = $pcf->read_bits(); my $value_port_3 = $bits[3];
Write an array of 8 values ( 0 or 1 ) to the device.
$bits[0] is written to port 0 of the device $bits[7] is written to port 7 of the device
Examples :
use HiPi qw( :rpi ); my $pcf = HiPi::Interface::PCF8574->new( address => 0x3f, ); .... # set all ports as output $pcf->write_bits(0,0,0,0,0,0,0,0); # set all ports high / input $pcf->write_bits(1,1,1,1,1,1,1,1);
Read a byte representing the values of the eight ports.
It is often more convenient to use read_bits which calls read_byte internally and separates the returned values into ordered bit values.
my @bytes = $pcf->read_byte();
Write a byte representing the required values on the device ports
$byte is the data to write
It is often more convenient to use write_bits which calls write_byte internally.
$pcf->write_byte( $byte );
Get the value of port number $port
my $bool = $pcf->get_port( 5 );
Set the port number $port with value $value.
$pcf->set_port( 5, $bool );