Crates.io | hd44780-driver |
lib.rs | hd44780-driver |
version | 0.4.0 |
source | src |
created_at | 2018-08-08 23:07:46.907539 |
updated_at | 2020-09-15 15:46:18.042557 |
description | A crate to use HD44780 compliant displays with embedded-hal |
homepage | |
repository | https://github.com/JohnDoneth/hd44780-driver |
max_upload_size | |
id | 78440 |
size | 2,106,873 |
Implementation of the embedded-hal
traits for the HD44780.
Examples for several different boards can be found here
Any platform that implements the embedded-hal traits is supported by this library! See awesome-embedded-rust for a list of supported platforms.
This library aims to keep it simple in that to get started all you will have to do is supply the HD44780::new
function a bunch of pins from your platform that implement the OutputPin
trait for embedded-hal as well as a struct that implements the delay traits DelayUs<u16>
and DelayMs<u8>
.
// Pseudo-code: check the HAL crate for your specific device for exact code to get pins / delay
// It is recommended to use push/pull output pins, but if your specific LCD device has pull-up resistors
// an open/drain output pin should work too
let mut delay = Delay::new();
let mut lcd = HD44780::new_4bit(
d4.into_push_pull_output(&mut port), // Register Select pin
d3.into_push_pull_output(&mut port), // Enable pin
d9.into_push_pull_output(&mut port), // d4
d10.into_push_pull_output(&mut port), // d5
d11.into_push_pull_output(&mut port), // d6
d12.into_push_pull_output(&mut port), // d7
&mut delay,
);
// Unshift display and set cursor to 0
lcd.reset(&mut delay);
// Clear existing characters
lcd.clear(&mut delay);
// Display the following string
lcd.write_str("Hello, world!", &mut delay);
// Move the cursor to the second line
lcd.set_cursor_pos(40, &mut delay);
// Display the following string on the second line
lcd.write_str("I'm on line 2!", &mut delay);
Additional issues as well as pull-requests are welcome.
If you have a platform not yet covered in this repository that is supported by embedded-hal, a pull-request of an example would be awesome!
This project is licensed under MIT license (LICENSE or https://opensource.org/licenses/MIT)