Crate ag_lcd[][src]

Expand description

AG-LCD

This is a rust port of the LiquidCrystal library. LiquidCrystal is a standard C++ library that allows developers to control a HITACHI HD44780 LCD screen with one or two 16-character lines. Alternatives to this library (that I’ve investigated) are:

I decided to create a more comprehensive solution because existing libraries were either incomplete or somewhat complicated to use. This library uses traits from embedded-hal and should work with any hardware abstraction layer that uses the same types. Currently this crate has only been tested with avr-hal and all example code and comments assume you’re using avr-hal as well.

Most features (blink, cursor, text direction etc.) can be set either through a general set_ function that accepts one or two arguments (like set_blink), through specific conveniance functions (blink_on rather than set_blink) or with a builder function (like with_blink).

If some functions are missing for a settings, its either because it doesn’t make sense for that particular setting, or because that feature can only be set before the build method is called (in which case only a with_ function is provided).

Usage

use ag_lcd::{Display, Blink, Cursor, LcdDisplay};

let peripherals = arduino_hal::Peripherals::take().unwrap();
let pins = arduino_hal::pins!(peripherals);
let delay = arduino_hal::Delay::new();

let rs = pins.d12.into_output().downgrade();
let rw = pins.d11.into_output().downgrade();
let en = pins.d10.into_output().downgrade();
// let d0 = pins.d9.into_output().downgrade();
// let d1 = pins.d8.into_output().downgrade();
// let d2 = pins.d7.into_output().downgrade();
// let d3 = pins.d6.into_output().downgrade();
let d4 = pins.d5.into_output().downgrade();
let d5 = pins.d4.into_output().downgrade();
let d6 = pins.d3.into_output().downgrade();
let d7 = pins.d2.into_output().downgrade();

let mut lcd: LcdDisplay<_,_> = LcdDisplay::new(rs, en, delay)
    // .with_full_bus(d0, d1, d2, d3, d4, d5, d6, d7)
    .with_half_bus(d4, d5, d6, d7)
    .with_display(Display::On)
    .with_blink(Blink::On)
    .with_cursor(Cursor::On)
    .with_rw(d10) // optional (set to GND if not provided)
    .build();

lcd.set_cursor(Cursor::Off);
lcd.set_blink(Blink::Off);

lcd.print("Test message!");

Structs

The LCD display

Enums

Flag that sets the display to autoscroll

Flag that sets cursor background to blink

Flag that sets the cursor on/off

Flag that sets the display on/off

Flag that controls text direction

Flag for the number of lines in the display

Flag for the bus mode of the display

Flag used to indicate direction for display scrolling

Flag for the character size of the display