NAME

   Device::Chip::MAX7219 - chip driver for a MAX7219

SYNOPSIS

      use Device::Chip::MAX7219;
      use Future::AsyncAwait;

      my $chip = Device::Chip::MAX7219->new;
      await $chip->mount( Device::Chip::Adapter::...->new );

      await $chip->power(1);

      await $chip->intensity( 2 );
      await $chip->limit( 8 );

      await $chip->displaytest( 1 );
      await $chip->shutdown( 0 );

      sleep 3;

      await $chip->displaytest( 0 );

DESCRIPTION

   This Device::Chip subclass provides specific communication to a Maxim
   Integrated MAX7219 chip attached to a computer via an SPI adapter. As
   the MAX7221 chip operates virtually identically, this chip will work
   too.

   The reader is presumed to be familiar with the general operation of
   this chip; the documentation here will not attempt to explain or define
   chip-specific concepts or features, only the use of this module to
   access them.

METHODS

   The following methods documented in an await expression return Future
   instances.

write_bcd

      await $chip->write_bcd( $digit, $val );

   Writes the value at the given digit, setting it to BCD mode if not
   already so. $val should be a single digit number or string, or one of
   the special recognised characters in BCD mode of -, E, H, L, P or
   space. The value may optionally be followed by a decimal point ., which
   will be set on the display.

   Switches the digit into BCD mode if not already so.

write_raw

      await $chip->write_raw( $digit, $bits );

   Writes the value at the given digit, setting the raw column lines to
   the 8-bit value given.

   Switches the digit into undecoded raw mode if not already so.

write_hex

      await $chip->write_hex( $digit, $val );

   Similar to write_bcd, but uses a segment decoder written in code rather
   than on the chip itself, to turn values into sets of segments to
   display. This makes it capable of displaying the letters A to F, in
   addition to numbers, - and space.

set_decode

      await $chip->set_decode( $bits );

   Directly sets the decode mode of all the digits at once. This is more
   efficient for initialising digits into BCD or raw mode, than individual
   calls to write_bcd or write_raw for each digit individually.

intensity

      await $chip->intensity( $value );

   Sets the intensity register. $value must be between 0 and 15, with
   higher values giving a more intense output.

limit

      await $chip->limit( $columns );

   Sets the scan limit register. $value must be between 1 and 8, to set
   between 1 and 8 digits. This should only be used to adjust for the
   number of LED digits or columns units physically attached to the chip;
   not for normal display blanking, as it affects the overall intensity.

   Note that this is not directly the value written to the LIMIT register.

shutdown

      await $chip->shutdown( $off );

   Sets the shutdown register, entirely blanking the display and turning
   off all output if set to a true value, or restoring the display to its
   previous content if set false.

   Note that this is not directly the value written to the SHUTDOWN
   register.

displaytest

      await $chip->displaytest( $on );

   Sets the display test register, overriding the output control and
   turning on every LED if set to a true value, or restoring normal
   operation if set to false.

AUTHOR

   Paul Evans <[email protected]>