=head1 NAME PINE64::MCP23008 - Perl interface to the MCP23008 GPIO extender. Can be used on any single board computer that has I2C capabilities. =head1 SYNOPSIS #--------READ PIN EXAMPLE--------------- my $gpext = PINE64::MCP23008->new(0x20); $gpext->set_direction(255); #all input $gpext->enable_pullup(255); #enable internal pullup resistors $gpext->set_polarity(255); #reverse io polarity #read pins 0 - 7 for(my $i=0;$i<8;$i++){ my $pinval = $gpext->read_pin($i); print "pin $i:\t$pinval\n"; sleep(1); }#end inner for print "---------------------------\n"; #------WRITE PIN EXAMPLE--------------- $gpext->set_direction(0); #all output $gpext->enable_pullup(0); #disable internal pullup resistors $gpext->set_polarity(0); #normal io polarity $gpext->write_pin(2, 1); #set gpio 2 high =head1 METHODS =head2 new($address, $i2cbus) Takes hexadecimal address of the i2c gpio extender chip and optionally, a string containing the path of the i2c controller on your single board computer i.e. /dev/i2c-1. Defaults to /dev/i2c-0. =head2 set_direction() Takes decimal from 0-255 as an argument and writes it to the IO direction register, 0x00. For example, if you want all the pins to be output, pass 0; all input pass 255; pin 7 and pin 1 as input, all others output, pass 130 (128 + 2). =head2 set_polarity() Takes a decimal from 0 to 255 as an argument and writes it to the IO polarity register, 0x01. Default is normal polarity. To reverse polarity on all pins, pass 255. If just to pins 2 & 3, pass 10 (4 + 8). =head2 enable_pullup() Takes a decimal from 0 - 255 as an argument and writes that value to the GPPU register, 0x06. A high value for a pin (that is configured as an input) will enable the internal 100K pullup resistors. The pin will be a logical high unless pulled low externall. This method is most useful when used on pins configured as inputs. For example, you can use with reverse polarity (see input example in the SYNOPSIS). =head2 write_pin($pin_number, $value) Sets GPIO $pin_number (0 - 7) to $value (0 or 1) when pin is configured as an output. =head2 read_pin($pin_number) Returns the value of $pin_number. As stated before, use with reversed polarity, and enable the pullup resistors (or build an external pull up resistor).