5个不稳定版本
0.3.0 | 2024年6月8日 |
---|---|
0.2.1 | 2023年10月5日 |
0.2.0 | 2023年5月8日 |
0.1.1 | 2023年4月29日 |
0.1.0 | 2023年4月29日 |
#244 in 嵌入式开发
10KB
143 行
uln2003
一个简单的crate,用于在支持嵌入式_hal的任何硬件上使用ULN2003驱动器控制28BYJ-48步进电机
使用方法
这两个esp32示例都使用如此教程中所示的结构
使用esp-hal (no_std)的esp32示例
fn main() {
let peripherals = Peripherals::take();
let system = SystemControl::new(peripherals.SYSTEM);
let clocks = ClockControl::max(system.clock_control).freeze();
let delay = Delay::new(&clocks);
let io = Io::new(peripherals.GPIO, peripherals.IO_MUX);
let mut motor = ULN2003::new(
Output::new(io.pins.gpio19, Level::Low),
Output::new(io.pins.gpio18, Level::Low),
Output::new(io.pins.gpio5, Level::Low),
Output::new(io.pins.gpio17, Level::Low),
Some(delay)
);
// run for 100 steps with 5 ms between steps
motor.step_for(100, 5).unwrap();
loop {
motor.step();
delay.delay_ms(5u32);
}
}
使用esp-idf-hal (std)的示例
use esp_idf_hal::delay;
use esp_idf_hal::gpio::PinDriver;
use esp_idf_hal::prelude::*;
use uln2003::{StepperMotor, ULN2003};
fn main() {
// It is necessary to call this function once. Otherwise some patches to the runtime
// implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71
esp_idf_svc::sys::link_patches();
// Bind the log crate to the ESP Logging facilities
esp_idf_svc::log::EspLogger::initialize_default();
let peripherals = Peripherals::take().unwrap();
let mut motor = ULN2003::new(
PinDriver::output(peripherals.pins.gpio19).unwrap(),
PinDriver::output(peripherals.pins.gpio18).unwrap(),
PinDriver::output(peripherals.pins.gpio5).unwrap(),
PinDriver::output(peripherals.pins.gpio17).unwrap(),
Some(delay::Delay::new_default()),
);
// run for 100 steps with 5 ms between steps
motor.step_for(100, 5).unwrap();
// manually do steps
loop {
motor.step().unwrap();
delay::FreeRtos::delay_ms(5);
}
}
依赖关系
~56KB