esp-idf-hal/examples/ledc-simple.rs
2022-10-07 20:53:26 +03:00

33 lines
899 B
Rust

use esp_idf_hal::delay::FreeRtos;
use esp_idf_hal::ledc::*;
use esp_idf_hal::peripherals::Peripherals;
use esp_idf_hal::prelude::*;
fn main() -> anyhow::Result<()> {
esp_idf_sys::link_patches();
println!("Configuring output channel");
let peripherals = Peripherals::take().unwrap();
let config = config::TimerConfig::new().frequency(25.kHz().into());
let mut channel = LedcDriver::new(
peripherals.ledc.channel0,
LedcTimerDriver::new(peripherals.ledc.timer0, &config)?,
peripherals.pins.gpio4,
&config,
)?;
println!("Starting duty-cycle loop");
let max_duty = channel.get_max_duty();
for numerator in [0, 1, 2, 3, 4, 5].iter().cycle() {
println!("Duty {}/5", numerator);
channel.set_duty(max_duty * numerator / 5)?;
FreeRtos::delay_ms(2000);
}
loop {
FreeRtos::delay_ms(1000);
}
}