Sorry. And thank you.
I am attaching the URL of the program in question I created and the documentation of the crate I am using
/*motor.rs*/
use arduino_hal as ah;
use tb6612fng as tb;
use ah::hal::port::{mode::{Output, PwmOutput},
Pin, PD3, PD4, PD7, PD5, PB0, PD6, PB3};
use ah::simple_pwm::Timer0Pwm;
use tb::{Motor,Tb6612fng, Tb6612fngError, DriveCommand::{Forward,Backward,Brake,Stop}};
type LeftMotorPin1 = Pin<Output, PD4>;
type LeftMotorPin2 = Pin<Output, PD3>;
type LeftPwmPin = Pin<PwmOutput<Timer0Pwm>, PD5>;
type RightMotorPin1 = Pin<Output, PB0>;
type RightMotorPin2 = Pin<Output, PD7>;
type RightPwmPin = Pin<PwmOutput<Timer0Pwm>, PD6>;
type StandByPin = Pin<Output, PB3>;
const DEFAULT_SPEED:u8 = 80;
pub struct MotorControl{
motor_driver: Tb6612fng<
LeftMotorPin1, LeftMotorPin2, LeftPwmPin,
RightMotorPin1, RightMotorPin2, RightPwmPin,
StandByPin>
}
impl MotorControl{
pub fn new(
ain1:LeftMotorPin1, ain2:LeftMotorPin2, pwma:LeftPwmPin,
bin1:RightMotorPin1, bin2:RightMotorPin2, pwmb:RightPwmPin,
stby:StandByPin
) -> Result<Self, Tb6612fngError<StandByPin>>{
let motor_left =
Motor::new(ain1, ain2, pwma).unwrap();
let motor_right =
Motor::new(bin1, bin2, pwmb).unwrap();
let motor_driver =
Tb6612fng::new(motor_left, motor_right,stby).unwrap();
return Ok(MotorControl{motor_driver})
}
pub fn set_stby(&mut self){
let _ = self.motor_driver.enable_standby().unwrap();
}
pub fn ready_stby(&mut self){
let _ = self.motor_driver.disable_standby().unwrap();
}
pub fn forward(&mut self){
self.ready_stby();
let _ = self.motor_driver.motor_a
.drive(Forward(DEFAULT_SPEED)).unwrap();
let _ = self.motor_driver.motor_b
.drive(Forward(DEFAULT_SPEED)).unwrap();
}
pub fn leftward(&mut self){
self.ready_stby();
let _ = self.motor_driver.motor_a
.drive(Backward(DEFAULT_SPEED)).unwrap();
let _ = self.motor_driver.motor_b
.drive(Forward(DEFAULT_SPEED)).unwrap();
}
pub fn rightward(&mut self){
self.ready_stby();
let _ = self.motor_driver.motor_a
.drive(Forward(DEFAULT_SPEED)).unwrap();
let _ = self.motor_driver.motor_b
.drive(Backward(DEFAULT_SPEED)).unwrap();
}
pub fn stop(&mut self){
self.ready_stby();
let _ = self.motor_driver.motor_a
.drive(Stop).unwrap();
let _ = self.motor_driver.motor_b
.drive(Stop).unwrap();
}
pub fn brake(&mut self){
self.ready_stby();
let _ = self.motor_driver.motor_a
.drive(Brake).unwrap();
let _ = self.motor_driver.motor_b
.drive(Brake).unwrap();
}
}
tb6612fng-rs
URL : http s://docs.rs/tb6612fng/1.0.0/tb6612fng/struct.Tb6612fng.html