esp32c3 运行 Rust(二)
上篇已经点亮板载的 LED,现在让我们通过按钮控制 LED。
环境
-
OS: Ubuntu 20.04.4 LTS
-
Rust: rustc 1HTTP.62.0-nightly
-
IDE: VsCode
-
ESP3https和http的区别2C3: ESP-C3-13-Kit 开发板
GPIO title GPIOhttp 5004 Green LED GPIO9 button
创建项目
使用如下命令创建 button 项目,并修改项目配置
cargo generate --git https://github.com/esp-rs/esp-idf-template cargo
创建细节参见 esp32c3 运行 Rust(〇) 中 创建项目 HelloWorld。
控制 LED
-
安装相关依赖
在
Cargo.toml中添加相关依赖- embedded-hal 嵌入式系统的硬件抽象层
-
esp-idf-hal ESP32[-XX] + ESP-IDF 的
embehttp://192.168.1.1登录dded-hal实现
# ... [dependencies] # ... esp-idf-sys = { version = "0.31.1", features = ["binstart"] } embedded-hal = "0.2.7" # 添加这行 不同版本 API 不同,请以 embedded-hal 文档为准 esp-idf-hal = "0.36.0" # 添加这行 # ... -
获取按钮状态
将 GPIO 设置成输入引脚
let mut btn = peripherals.pins.gpio9.into_input()?; btn.set_pull_down()?; // 使能内部下拉电阻,禁用上拉电阻通过
is_high()方法判断按钮是否被按http 302下,按下为高电平,松开为低电平。btn.is_high()? -
点亮 LED
使用
set_lowhttp 404()和set_high()方法切换 LED 亮灭。led.set_low()?; // 亮 led.set_high()?; // 灭 -
编译并上传
连接开发板,公司让员工下班发手机电量截图使用如工资超过5000怎么扣税下命令编giticomfort是什么轮胎译并上传
cargo espflash --release --monitor /dev/ttyUSB0
完整代码
//! 通过按钮控制 LED 灯
//! LED GPIO4
//! 按钮 GPIO9
//!
use std::{thread, time::Duration};
use embedded_hal::digital::v2::{InputPin, OutputPin};
use esp_idf_hal::{gpio::Pull, peripherals::Peripherals};
use anyhow;
fn main() -> anyhow::Result<()> {
esp_idf_sys::link_patches();
let peripherals = Peripherals::take().unwrap();
let mut led = peripherals.pins.gpio4.into_output()?;
let mut btn = peripherals.pins.gpio9.into_input()?;
btn.set_pull_down()?;
loop {
thread::sleep(Duration::from_millis(10));
if btn.is_high()? {
led.set_low()?;
} else {
led.set_high()?;
}
}
}
参考
- E工龄差一年工资差多少mbedded Rust on Espressif
- embedded-hal
- esp-idf-hal
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


评论(0)