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. This module drives a single MAX7219 chip. For situations involving multiple chips daisy-chained together (such as on popular LED matrix display board modules) see instead Device::Chip::MAX7219Panel. 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