4 releases
0.2.1 | Oct 5, 2023 |
---|---|
0.2.0 | May 8, 2023 |
0.1.1 | Apr 29, 2023 |
0.1.0 | Apr 29, 2023 |
#291 in Embedded development
9KB
146 lines
uln2003
A simple crate to use a 28BYJ-48 stepper motor with and ULN2003 Driver on any hardware implementing embedded-hal
Usage
Both esp32 examples use the wiring as shown in this tutorial
Example on an esp32 using the esp-hal (no_std)
let peripherals = Peripherals::take();
let system = peripherals.DPORT.split();
let clocks = ClockControl::boot_defaults(system.clock_control).freeze();
let mut delay = Delay::new(&clocks);
let io = IO::new(peripherals.GPIO, peripherals.IO_MUX);
let mut motor = ULN2003::new(
io.pins.gpio19.into_push_pull_output(),
io.pins.gpio18.into_push_pull_output(),
io.pins.gpio5.into_push_pull_output(),
io.pins.gpio17.into_push_pull_output(),
delay
);
loop {
motor.step();
delay.delay_ms(5u32);
}
Example using esp-idf-hal (std)
struct Delay;
impl embedded_hal::blocking::delay::DelayMs<u32> for Delay {
fn delay_ms(&mut self, ms: u32) {
delay::FreeRtos::delay_ms(ms);
}
}
fn main(){
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),
);
// run for 100 steps with 5 ms between steps
motor.step_for(100, 5).unwrap();
loop {
motor.step();
delay::FreeRtos::delay_ms(5);
}
}
Dependencies
~67KB