#![no_std] #![no_main] extern crate alloc; use alloc::string::String; use esp_backtrace as _; // panic_handler use esp_hal::{ interrupt::software::SoftwareInterruptControl, rmt::Rmt, time::Rate, timer::timg::TimerGroup, }; use esp_hal_smartled::{SmartLedsAdapter, smart_led_buffer}; use esp_radio::wifi; use smart_leds::RGB; use esp32c6_play::{init, sin, wait_ms, write_rgb}; // This creates a default app-descriptor required by the esp-idf bootloader. // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); #[esp_hal::main] fn main() -> ! { // initialize peripherals and logging let peripherals = init(); // initialize heap esp_alloc::heap_allocator!(size: 64 * 1024); // initialize wifi let timg0 = TimerGroup::new(peripherals.TIMG0); let software_interrupt = SoftwareInterruptControl::new(peripherals.SW_INTERRUPT); esp_rtos::start(timg0.timer0, software_interrupt.software_interrupt0); let esp_radio_controller = esp_radio::init().expect("failed to init radio controller"); let (mut wifi_controller, _) = wifi::new( &esp_radio_controller, peripherals.WIFI, wifi::Config::default(), ) .expect("failed to create wifi controller"); let wifi_config = wifi::ModeConfig::AccessPoint( wifi::AccessPointConfig::default() .with_auth_method(wifi::AuthMethod::WpaWpa2Personal) .with_ssid(String::from("ssid-test")) .with_password(String::from("password")), ); wifi_controller .set_config(&wifi_config) .expect("failed to set wifi config"); wifi_controller .start() .expect("failed to start wifi controller"); // set up rgb led let mut led_buffer = smart_led_buffer!(1 /* # of leds */); let mut rgb_led = { let frequency = Rate::from_mhz(80); // max frequency of RMT let rmt = Rmt::new(peripherals.RMT, frequency).expect("failed to initialize RMT0"); SmartLedsAdapter::new(rmt.channel0, peripherals.GPIO8, &mut led_buffer) }; loop { for i in 0..255 { let r: u8 = i; let g: u8 = i + 255 / 3; // phase shifted a third let b: u8 = i + 2 * (255 / 3); // phase shifted two thirds write_rgb(&mut rgb_led, RGB::new(sin(r), sin(g), sin(b))); wait_ms(8); } } }