3个版本
使用旧的Rust 2015
0.1.11 | 2022年6月25日 |
---|---|
0.1.1 | 2021年10月13日 |
0.1.0 | 2021年10月13日 |
#2013 在 硬件支持
每月52次 下载
16KB
221 代码行
用于Rust的Qwiic继电器I2C库(WIP)
描述
本库旨在通过Linux使用I2C控制Qwiic继电器。其主要目标是ARM设备,如RaspberryPi或FriendlyARM的NanoPi Neo。它应该可以在其他具有I2C总线访问的Linux发行版上运行。
目前,我只有测试目的的Quad固态继电器。如果您在使用其他Qwiic继电器时遇到问题,请提交问题或pull请求。
路线图
- 将继电器命令和地址映射到结构体(完成)
- 能够切换所有继电器开/关(完成)
- 能够切换单个继电器开/关(完成)
- 能够读取继电器状态(完成)
- 能够检查固件版本(完成)
- 能够更改继电器硬件地址(WIP)
如何使用库
将以下行添加到您的 cargo.toml 中
qwiic-relay-rs = "0.1.11"
或者,对于master分支上最新的提交,使用
qwiic-relay-rs = { git = "https://github.com/PixelCoda/QwiicRelay-Rust.git", version = "*" }
示例
extern crate qwiic_relay_rs;
use qwiic_relay_rs::*;
use std::thread;
use std::time::Duration;
fn main() {
let config = QwiicRelayConfig::default();
let mut qwiic_relay = QwiicRelay::new(config, "/dev/i2c-1", 0x08).expect("Could not init device");
let version = qwiic_relay.get_version();
match version {
Ok(v) => {
println!("Firmware Version: {}", v);
println!("all off");
qwiic_relay.set_all_relays_off().unwrap();
thread::sleep(Duration::from_secs(2));
println!("all on");
qwiic_relay.set_all_relays_on().unwrap();
thread::sleep(Duration::from_secs(2));
println!("all off");
qwiic_relay.set_all_relays_off().unwrap();
thread::sleep(Duration::from_secs(2));
println!("set_relay_on: 1");
qwiic_relay.set_relay_on(Some(1)).unwrap();
thread::sleep(Duration::from_secs(2));
println!("get_relay_state: 1");
let relay_one_state = qwiic_relay.get_relay_state(Some(1)).unwrap();
if relay_one_state {
println!("relay 1 is on!");
}
thread::sleep(Duration::from_secs(2));
println!("set_relay_off: 1");
qwiic_relay.set_relay_off(Some(1)).unwrap();
thread::sleep(Duration::from_secs(2));
println!("set_relay_on: 2");
qwiic_relay.set_relay_on(Some(2)).unwrap();
thread::sleep(Duration::from_secs(2));
println!("get_relay_state: 2");
let relay_one_state = qwiic_relay.get_relay_state(Some(2)).unwrap();
if relay_one_state {
println!("relay 2 is on!");
}
thread::sleep(Duration::from_secs(2));
println!("set_relay_off: 2");
qwiic_relay.set_relay_off(Some(2)).unwrap();
thread::sleep(Duration::from_secs(2));
println!("set_relay_on: 3");
qwiic_relay.set_relay_on(Some(3)).unwrap();
thread::sleep(Duration::from_secs(2));
println!("get_relay_state: 3");
let relay_one_state = qwiic_relay.get_relay_state(Some(3)).unwrap();
if relay_one_state {
println!("relay 3 is on!");
}
thread::sleep(Duration::from_secs(2));
println!("set_relay_off: 3");
qwiic_relay.set_relay_off(Some(3)).unwrap();
thread::sleep(Duration::from_secs(2));
println!("set_relay_on: 4");
qwiic_relay.set_relay_on(Some(4)).unwrap();
thread::sleep(Duration::from_secs(2));
println!("get_relay_state: 4");
let relay_one_state = qwiic_relay.get_relay_state(Some(4)).unwrap();
if relay_one_state {
println!("relay 4 is on!");
}
thread::sleep(Duration::from_secs(2));
println!("set_relay_off: 4");
qwiic_relay.set_relay_off(Some(4)).unwrap();
thread::sleep(Duration::from_secs(2));
},
Err(e) => println!("{:?}", e)
}
}
参考
- https://github.com/sparkfun/Qwiic_Relay_Py/blob/main/qwiic_relay.py
- https://github.com/sparkfun/SparkFun_Qwiic_Relay_Arduino_Library/tree/master/src
许可证
Apache 2.0许可证下发布。
通过以下方式支持并关注我的工作:
购买我的NFT
查看我的Github
关注我的Facebook页面
订阅我的Patreon
或者捐款加密货币
- ADA: addr1qyp299a45tgvveh83tcxlf7ds3yaeh969yt3v882lvxfkkv4e0f46qvr4wzj8ty5c05jyffzq8a9pfwz9dl6m0raac7s4rac48
- ALGO: VQ5EK4GA3IUTGSPNGV64UANBUVFAIVBXVL5UUCNZSDH544XIMF7BAHEDM4
- ATOM: cosmos1wm7lummcealk0fxn3x9tm8hg7xsyuz06ul5fw9
- BTC: bc1qh5p3rff4vxnv23vg0hw8pf3gmz3qgc029cekxz
- ETH: 0x7A66beaebF7D0d17598d37525e63f524CfD23452
- ERC20: 0x7A66beaebF7D0d17598d37525e63f524CfD23452
- XLM: GCJAUMCO2L7PTYMXELQ6GHBTF25MCQKEBNSND2C4QMUPTSVCPEN3LCOG
- XTZ: tz1SgJppPn56whprsDDGcqR4fxqCr2PXvg1R
依赖关系
~2MB
~42K SLoC