![Rust] ![Crates.io version] ![stepper_lib: rustc 1.68+]
Note
Many aspects of the library (for example the documentation) are not fully finished yet! (Though I try to update it as freqent as possible)
A library for all types of components used in robots, including controlls for stepper motors, servo motors and more complex assemblies using said motors. Currently all implementations are made for the raspberry pi, though new implementations for more controllers are currently being made.
Basis library for the sybot_lib
Let us assume we want to control a simple stepper motor (in this example a 17HE151504S) with a PWM controller connected to the BCM pins 27 and 19.
Click to show Cargo.toml
```toml
[dependencies]
stepper_lib = { version = "0.11.4", features = [ "rasp" ] }
```
```rust use core::f32::consts::PI;
// Include the library use stepper_lib::prelude::*;
// Pin declerations (BCM on raspberry pi) const PINDIR : u8 = 27; const PINSTEP : u8 = 19;
// Define distance and max speed const DELTA : Delta = Delta(2.0 * PI); const OMEGA : Omega = Omega(10.0);
fn main() -> Result<(), stepperlib::Error> { // Create the controls for a stepper motor let mut ctrl = StepperCtrl::new(StepperConst::MOT17HE151504S, PINDIR, PINSTEP); // Link the component to a system ctrl.writelink(LinkedData { u: 12.0, // System voltage in volts s_f: 1.5 // System safety factor, should be at least 1.0 }); ctrl.setup()?;
// Apply some loads
ctrl.apply_inertia(Inertia(0.2));
ctrl.apply_force(Force(0.10));
ctrl.set_omega_max(OMEGA);
println!("Staring to move");
ctrl.drive_rel(DELTA, 1.0)?; // Move the motor
println!("Distance {}rad with max speed {:?}rad/s done", DELTA, OMEGA);
Ok(())
} ``` (Source: stepper_motor)
no_std
environmentIf you encounter any issues or if you have any request for new features, feel free to create an issue at the GitHub repo.