#lcd #i2c #adafruit

no-std adafruit-lcd-backpack

Unofficial driver for the Adafruit I2C LCD backpack

2 releases

new 0.1.2 Oct 22, 2024
0.1.1 Feb 19, 2024

#2014 in Embedded development

MIT license

570KB
319 lines

adafruit-lcd-backpack

THIS LIBRARY IS NO LONGER MAINTAINED

This library has not been updated to be compatible with embedded-hal version 1.0.0 and later. It is recommended to use the i2c-character-display driver instead (repository), which is compatible with embedded-hal version 1.0.0 and later and supports the Adafruit I2C LCD backpack plus other I2C character displays.


Rust driver for the Adafruit I2C LCD backpack with MCP23008 GPIO expander

NOTE: This library is not made by Adafruit, and is not supported by them. The use of the Adafruit name is for compatibility identification purposes only.

Overview

This crate provides a driver for the Adafruit I2C LCD backpack with MCP23008 GPIO expander. It is designed to be used with the embedded-hal traits for embeded systems. It supports standard HD44780 based LCD displays.

Usage

To create a new LCD backpack, use the new method. This will return a new LCD backpack object. Pass it the type of LCD display you are using, the I2C bus, and the delay object. Both the I2C Bus and Delay objects must implement the relevant embedded-hal traits.

// The embedded-hal traits are used to define the I2C bus and delay objects
use embedded_hal::{
    blocking::delay::{DelayMs, DelayUs},
    blocking::i2c::{Write, WriteRead},
};
use lcd_backpack::{LcdBackpack, LcdDisplayType};

// create the I2C bus per your platform
let i2c = ...;

// create the delay object per your platform
let delay = ...;

// create the LCD backpack
let mut lcd = LcdBackpack::new(LcdDisplayType::Lcd16x2, i2c, delay);

// initialize the LCD
if let Err(_e) = lcd.init() {
   panic!("Error initializing LCD");
}

This library supports the core::fmt::Write trait, allowing it to be used with the write! macro. For example:

use core::fmt::Write;

// write a string to the LCD
if let Err(_e) = write!(lcd, "Hello, world!") {
  panic!("Error writing to LCD");
}

The various methods for controlling the LCD are also available. Each returns a Result that wraps the LCD backpack object. This allows you to chain the methods together. For example:

// clear the display and home the cursor before writing a string
if let Err(_e) = write!(lcd.clear()?.home()?, "Hello, world!") {
 panic!("Error writing to LCD");
}

License

Licensed under the MIT license.

Dependencies