Crates.io | mcp23017 |
lib.rs | mcp23017 |
version | 1.1.0 |
source | src |
created_at | 2019-10-15 20:49:34.039944 |
updated_at | 2024-09-14 07:54:43.178652 |
description | A rust driver for the MCP23017 (16-Bit I2C I/O Expander with Serial Interface) |
homepage | |
repository | https://github.com/circuitry-maker/mcp23017 |
max_upload_size | |
id | 172805 |
size | 21,731 |
mcp23017
no_std driver for MCP23017 (16-Bit I2C I/O Expander with Serial Interface module)
Include this library as a dependency in your Cargo.toml
:
[dependencies.mcp23017]
version = "<version>"
Use embedded-hal implementation to get I2C handle and then create mcp23017 handle:
extern crate mcp23017;
match mcp23017::MCP23017::default(i2c) {
Ok(mut u) => {
u.init_hardware();
u.pin_mode(1, mcp23017::PinMode::OUTPUT); // for the first pin
u.all_pin_mode(mcp23017::PinMode::OUTPUT); // or for all pins
let status = u.read_gpioab().unwrap();
println!("all {:#?}", status).unwrap();
let read_a = u.read_gpio(mcp23017::Port::GPIOA).unwrap();
println!("port a {:#?}", read_a).unwrap();
match u.write_gpioab(65503){
Ok(_) => {
println!("ok").unwrap();
}
_ => {
println!("something wrong").unwrap();
}
}
}
Err(mcp23017::MCP23017::Error::BusError(error)) => {
println!("{:#?}", error).unwrap();;
panic!();
}
_ => {
panic!();
}
};
API Docs available on docs.rs