This commit is contained in:
rafael 2024-10-20 23:31:53 +02:00
parent 7fc09f89e8
commit 8baf88f8f4

View File

@ -1,23 +1,23 @@
//! # PWM TB6612FNG motor driver //! # PWM TB6612FNG motor driver
//! //!
//! This example shows the use of a TB6612FNG motor driver. The driver is built on top of embedded_hal and the example demonstrates how embassy_rp can be used to interact with ist. //! This example shows the use of a TB6612FNG motor driver. The driver is built on top of embedded_hal and the example demonstrates how embassy_rp can be used to interact with ist.
#![no_std] #![no_std]
#![no_main] #![no_main]
use assign_resources::assign_resources;
use defmt::*; use defmt::*;
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_rp::block::ImageDef; use embassy_rp::block::ImageDef;
use embassy_rp::config::Config; use embassy_rp::config::Config;
use embassy_rp::gpio;
use embassy_rp::gpio::Output; use embassy_rp::gpio::Output;
use embassy_rp::peripherals; use embassy_rp::peripherals;
use embassy_rp::gpio;
use embassy_rp::pwm; use embassy_rp::pwm;
use embassy_time::Duration; use embassy_time::Duration;
use embassy_time::Timer; use embassy_time::Timer;
use {defmt_rtt as _, panic_probe as _};
use tb6612fng::{DriveCommand, Motor, Tb6612fng}; use tb6612fng::{DriveCommand, Motor, Tb6612fng};
use assign_resources::assign_resources; use {defmt_rtt as _, panic_probe as _};
/// Maximum PWM value (fully on) /// Maximum PWM value (fully on)
const PWM_MAX: u16 = 50000; const PWM_MAX: u16 = 50000;
@ -94,21 +94,20 @@ async fn main(_spawner: Spawner) {
Timer::after(Duration::from_secs(2)).await; Timer::after(Duration::from_secs(2)).await;
// actively brake // actively brake
info!("brake"); info!("brake");
control.motor_a.drive(DriveCommand::Brake).unwrap(); control.motor_a.drive(DriveCommand::Brake).unwrap();
control.motor_b.drive(DriveCommand::Brake).unwrap(); control.motor_b.drive(DriveCommand::Brake).unwrap();
Timer::after(Duration::from_secs(1)).await; Timer::after(Duration::from_secs(1)).await;
// slowly turn for 3s // slowly turn for 3s
info!( "turn"); info!("turn");
control.motor_a.drive(DriveCommand::Backward(10)).unwrap(); control.motor_a.drive(DriveCommand::Backward(10)).unwrap();
control.motor_b.drive(DriveCommand::Forward(10)).unwrap(); control.motor_b.drive(DriveCommand::Forward(10)).unwrap();
Timer::after(Duration::from_secs(3)).await; Timer::after(Duration::from_secs(3)).await;
// and put the driver in standby mode and wait for 5s // and put the driver in standby mode and wait for 5s
info!( "standby"); info!("standby");
control.enable_standby().unwrap(); control.enable_standby().unwrap();
Timer::after(Duration::from_secs(5)).await; Timer::after(Duration::from_secs(5)).await;
} }
} }