esp-idf-hal/examples/ledc_simple.rs
2023-10-14 07:36:30 +00:00

34 lines
887 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_hal::sys::link_patches();
println!("Configuring output channel");
let peripherals = Peripherals::take()?;
let mut channel = LedcDriver::new(
peripherals.ledc.channel0,
LedcTimerDriver::new(
peripherals.ledc.timer0,
&config::TimerConfig::new().frequency(25.kHz().into()),
)?,
peripherals.pins.gpio4,
)?;
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 {numerator}/5");
channel.set_duty(max_duty * numerator / 5)?;
FreeRtos::delay_ms(2000);
}
loop {
FreeRtos::delay_ms(1000);
}
}