#![no_std] #![no_main] use esp_backtrace as _; use esp_hal::clock::CpuClock; use esp_hal::main; use esp_hal::rmt::Rmt; use esp_hal::time::{Duration, Instant, Rate}; use esp_hal_smartled::{SmartLedsAdapter, smart_led_buffer}; use log::info; use smart_leds::{ SmartLedsWrite as _, brightness, colors::{BLUE, GREEN, RED}, }; // This creates a default app-descriptor required by the esp-idf bootloader. // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); #[main] fn main() -> ! { // generator version: 1.2.0 esp_println::logger::init_logger_from_env(); let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); let peripherals = esp_hal::init(config); let mut buffer = smart_led_buffer!(1); let mut led = { let frequency = Rate::from_mhz(80); let rmt = Rmt::new(peripherals.RMT, frequency).expect("failed to initialize RMT0"); SmartLedsAdapter::new(rmt.channel0, peripherals.GPIO8, &mut buffer) }; let level = 10; loop { info!("Hello world!"); let delay_start = Instant::now(); led.write(brightness([RED].into_iter(), level)).unwrap(); while delay_start.elapsed() < Duration::from_millis(500) {} led.write(brightness([GREEN].into_iter(), level)).unwrap(); while delay_start.elapsed() < Duration::from_millis(1000) {} led.write(brightness([BLUE].into_iter(), level)).unwrap(); while delay_start.elapsed() < Duration::from_millis(1500) {} } }