NAME

HiPi::MCP23017

VERSION

Version 0.01

SYNOPSYS

use HiPi::Constant qw( :mcp23017 );
use HiPi::MCP23017;

my $mcp = HiPi::MCP23017->new;

my @bits = (0,0,0,0,0,0,0,0);

# set all pins on port A as output
$mcp->write_register_bits('IODIRA', @bits);

# set level of all pins on port A low
$mcp->write_register_bits('GPIOA', @bits);

# set level of port A pin 7 high
@bits = $mcp->read_register_bits('GPIOA');
$bits[7] = 1;
$mcp->write_register_bits('GPIOA', @bits);

# check level of port A pin 3
@bits = $mcp->read_register_bits('GPIOA');
my $val = $bits[3];

DESCRIPTION

This module provides an interface to the popular MCP23017 IO expander. (The I2C version )

METHODS

new

my $mcp = HiPi::MCP23017->new;

my $mcp = HiPi::MCP23017->new( {
    i2caddress   => 0x20,
    devicename   => '/dev/i2c-1' } );

write_register_bits

$mcp->write_register_bits($register, @bits);

Write an array of 8 bit values ( 0 or 1 ) to the specified register.

$bits[0] is written to register bit 0

$bits[7] is written to register bit 7

Valid values for $register are the register names:

'IODIRA', 'IPOLA', 'GPINTENA', 'DEFVALA', INTCONA',
'IOCON', 'GPPUA', 'INTFA', 'INTCAPA', 'GPIOA','OLATA',
'IODIRB', 'IPOLB', 'GPINTENB', 'DEFVALB', 'INTCONB',
'GPPUB', 'INTFB', 'INTCAPB', 'GPIOB','OLATB'

read_register_bits

my @bits = $mcp->write_register_bits($register);

Read an array of 8 bit values ( 0 or 1 ) from the specified register.

$bits[0] is populated from register bit 0

$bits[7] is populated from register bit 7

Valid values for $register are the register names:

'IODIRA', 'IPOLA', 'GPINTENA', 'DEFVALA', INTCONA',
'IOCON', 'GPPUA', 'INTFA', 'INTCAPA', 'GPIOA','OLATA',
'IODIRB', 'IPOLB', 'GPINTENB', 'DEFVALB', 'INTCONB',
'GPPUB', 'INTFB', 'INTCAPB', 'GPIOB','OLATB'

LICENSE

This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or any later version.

License Note

I would normally release any Perl code under the Perl Artistic License but this module wraps several GPL / LGPL C libraries and I feel that the licensing of the entire distribution is simpler if the Perl code is under GPL too.

AUTHOR

Mark Dootson, <mdootson at cpan.org>

COPYRIGHT

Copyright (C) 2012-2013 Mark Dootson, all rights reserved.