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<()> {
let peripherals = Peripherals::take().unwrap();
let mut channel = LedcDriver::new(
peripherals.ledc.channel0,
LedcTimerDriver::new(
peripherals.ledc.timer0,
&config::TimerConfig::new().resolution(Resolution::Bits10).frequency(50.Hz().into())
)?,
peripherals.pins.gpio3
)?;
let mut duty = 75;
loop {
while duty < 120 {
channel.set_duty(duty)?;
FreeRtos::delay_ms(15);
duty += 1;
}
while duty > 30 {
channel.set_duty(duty)?;
FreeRtos::delay_ms(15);
duty -= 1;
}
}
}