Skip to content

A simple crate to use a 28BYJ-48 stepper motor with and ULN2003 Driver on any hardware implementing embedded-hal

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

MnlPhlp/uln2003

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

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);
    }
}

Example using 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);
    }
}

About

A simple crate to use a 28BYJ-48 stepper motor with and ULN2003 Driver on any hardware implementing embedded-hal

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages