3个不稳定版本
0.2.0 | 2023年1月30日 |
---|---|
0.1.1 | 2023年1月29日 |
0.1.0 | 2023年1月29日 |
#673 在 嵌入式开发
13KB
170 行
LCD1602RGB 驱动器
用于LCD1602RGB段式LCD的驱动器,它不适用于其他段式LCD,但你可能能够使用此驱动器实现一些基本功能。
我编写此驱动器是为了个人使用,并将维护它并在需要时实现缺失的指令,特别是关于我计划工作的应用程序。不过,欢迎提交拉取请求。
这是我第一个真正的嵌入式Rust项目,我使用了以下资源
- PCA9633 数据手册
- AiP21068 数据手册
- 嵌入式HAL 文档
- Raspberry Pi Pico 引脚分配数据手册
- LCD1602-RGB 数据手册
- JohnSL的LCD1602 i2c驱动程序
- Pi Pico 项目模板
使用方法
Raspberry Pi Pico
按照以下说明操作: https://github.com/rp-rs/rp2040-project-template
在 Cargo.toml
中包含最新版本
[dependencies]
lcd1602rgb-rs = "0.1.0"
在rp2040项目模板的 main.rs
中使用此示例代码
let mut scl_pin = pins.gpio15.into_mode::<gpio::FunctionI2C>();
let mut sda_pin = pins.gpio14.into_mode::<gpio::FunctionI2C>();
let i2c_dev = i2c::I2C::new_controller(pac.I2C1, sda_pin, scl_pin, 400_u32.kHz(), &mut pac.RESETS, clocks.system_clock.freq());
let mut display_controller = Display::new(i2c_dev, delay).unwrap();
display_controller.write_text("Hello, World! How are you?").unwrap();
let mut r: u8 = 0;
let mut g: u8 = 255;
let mut b: u8 = 128;
let mut r_set = true;
let mut g_set = true;
let mut b_set = true;
loop {
if r == 255 {
r_set = false;
} else if r == 0 {
r_set = true;
}
if r_set {
r += 1;
} else {
r -= 1;
}
if g == 255 {
g_set = false;
} else if g == 0 {
g_set = true;
}
if g_set {
g += 1;
} else {
g -= 1;
}
if b == 255 {
b_set = false;
} else if b == 0 {
b_set = true;
}
if b_set {
b += 1;
} else {
b -= 1;
}
display_controller.delay.delay_ms(10);
display_controller.backlight_colour(r, g, b).unwrap();
}
待办事项
- ✅ 移除平台特定依赖项。 238d4c0
- ⬜️ 根据规格说明书实现开关。
- ⬜️ 实现剩余的缺失指令。
- ⬜️ 验证AiP31068在向一行写入多于16个字符时的行为。
- ⬜️ 适当调整功能。
- ⬜️ 代码清理。
- ⬜️ 提高一致性。
- ⬜️ 整理。
- ⬜️ 在
README.md
中为复选框找到替代表情。 - ⬜️ 创建用于其他平台的说明。
- ⬜️ 改进Raspberry Pi Pico使用说明。
依赖项
~71KB