返回

探索 esp32c3 单片机与 Rust 语言的趣味交互:打造 LED 按钮控制系统

闲谈

在上一篇中,我们成功点亮了 esp32c3 单片机的板载 LED。现在,我们将更进一步,通过一个按钮来控制 LED 的亮灭。

  1. 硬件准备

    • esp32c3 开发板
    • 面包板
    • 跳线
    • 按键
    • 10kΩ 电阻
  2. 原理图及代码

    参考下图原理图连接好电路。

    [原理图]

    在 esp32c3 的 Rust 代码中,我们需要添加对 GPIO 输入/输出功能的支持。首先,我们需要在 Cargo.toml 文件中添加以下依赖项:

    [dependencies]
    esp32c3-hal = "0.5.0"
    

    然后,我们在 main.rs 文件中添加以下代码:

    use esp32c3_hal::{
        clock,
        gpio::{Gpio3, Input, PullUp},
        pac,
        prelude::*,
    };
    
    fn main() -> ! {
        let peripherals = pac::Peripherals::take().unwrap();
    
        let clocks = clock::ClockControl::configure(
            peripherals.FRC_輕觸按鈕,
            peripherals.apb_clk,
            clock::mhz(80),
            clock::mhz(80),
        );
    
        let mut button = Gpio3::new(peripherals.GPIO3, Input::PullUp);
    
        loop {
            if button.is_low() {
                // LED 开启
            } else {
                // LED 关闭
            }
        }
    }
    

    这段代码首先初始化了时钟和 GPIO 引脚。然后,我们进入了一个无限循环,不断检查按钮的状态。如果按钮被按下(即电平为低),我们就打开 LED;如果按钮没有按下(即电平为高),我们就关闭 LED。

  3. 编译和烧录

    使用以下命令编译并烧录代码:

    cargo build
    cargo run --release
    
  4. 测试

    将 esp32c3 开发板连接到计算机,打开串口终端,然后按下按钮。您应该会看到 LED 亮起或熄灭,具体取决于按钮的状态。

  5. 结语

    通过这个项目,我们学习了如何使用 Rust 语言编程 esp32c3 单片机,并构建了一个简单的按钮控制 LED 的交互系统。我们还了解了 GPIO 输入/输出功能、事件驱动编程以及 Rust 语言的强大之处。希望这个项目对您有所帮助,也希望您能继续探索 Rust 语言和嵌入式开发的世界。