HiPi::Interface::LCDBackpackPCF8574
This module provides an interface to LCD devices using common PCF8574 based backpacks.
It uses HiPi::Interface::PCF8574 as a backend.
Methods
- new
- init_display
- enable
- set_cursor_position
- move_cursor_left
- move_cursor_right
- home
- clear
- set_cursor_mode
- backlight
- send_text
- send_command
%params contains a number of key value pairs
Required key value pairs are width and lines. You must specify the geometry of your LCD:
use HiPi qw( :lcd ); use HiPi::Interface::LCDBackpackPCF8574; my $lcd = HiPi::Interface::LCDBackpackPCF8574->new( width => 16, lines => 4, );
Options and their defaults
backlightcontrol => 0 specify if methods setting the level of backlight can be used. The method $lcd->backlight will only work if you set backlightcontrol => 1 in the constructor. devicename => ( raspbi board version == 1 ) ? '/dev/i2c-0' : '/dev/i2c-1' address => 0x3F Consult the PCF8574 documentation for the address of your device. ICs with an A in the name ( PCF8574AT ). Generally have a default of 0x3f. Those without ( PCF8574T ) generally have a default of 0x27. Use i2cdetect -y 1 to check for your device.
Example complete constructor call:
my $lcd = HiPi::Interface::LCDBackpackPCF8574->new( width => 16, lines => 4, devicename => '/dev/i2c-1', address => 0x27 backlightcontrol => 1 ); $lcd->init_display;
Usage Example
my $lcd = HiPi::Interface::LCDBackpackPCF8574->new( address => 0x3f, width => 16, lines => 4, backlightcontrol => 1, ); $lcd->backlight(1); $lcd->init_display(); $lcd->enable(1); $lcd->clear; $lcd->set_cursor_position(0,0); $lcd->send_text('Hello World'); sleep 10; $lcd->backlight(0); $lcd->clear; $lcd->enable(0);
After power on reset you must initialise the display using $lcd->init_display.
You may call the method again to reset the display at any time.
$lcd->init_display();
Switch the LCD on / off
$lcd->enable( 1 ); # on $lcd->enable( 0 ); # off
Set the current cursor position.
# set the position to the leftmost column of the top row. $lcd->set_cursor_position(0, 0);
Move the cursor one position to the left
$lcd->move_cursor_left();
Move the cursor one position to the right
$lcd->move_cursor_right();
Move the cursor to the top left postion
$lcd->home();
Clear all text and move the cursore position to the top left.
$lcd->clear();
Set the cursor mode. Valid constants for mode are :
- HD44780_CURSOR_OFF
- HD44780_CURSOR_BLINK
- HD44780_CURSOR_UNDERLINE
use HiPi qw( :lcd ); ..... $lcd->set_cursor_mode( HD44780_CURSOR_BLINK );
Set the backlight on or off. This only has an effect if backlightcontrol => 1 was used in the constructor
$lcd->backlight( 1 );
Send $text to be 'printed' at the current cursor position.
$lcd->send_text( 'Hello World' );
Send a raw HD44780 command. $command can be one of :
- HD44780_CLEAR_DISPLAY
- HD44780_HOME_UNSHIFT
- HD44780_CURSOR_MODE_LEFT
- HD44780_CURSOR_MODE_LEFT_SHIFT
- HD44780_CURSOR_MODE_RIGHT
- HD44780_CURSOR_MODE_RIGHT_SHIFT
- HD44780_DISPLAY_OFF
- HD44780_DISPLAY_ON
- HD44780_CURSOR_OFF
- HD44780_CURSOR_UNDERLINE
- HD44780_CURSOR_BLINK
- HD44780_SHIFT_CURSOR_LEFT
- HD44780_SHIFT_CURSOR_RIGHT
- HD44780_SHIFT_DISPLAY_LEFT
- HD44780_SHIFT_DISPLAY_RIGHT
use HiPi qw( :lcd ); ..... $lcd->send_command( HD44780_DISPLAY_OFF );