summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: 312fe2090aed13d4149d9a9d745c6c02e986aed1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#![no_std]
#![no_main]

use esp_backtrace as _; // panic_handler
use esp_hal::{rmt::Rmt, time::Rate};
use esp_hal_smartled::{SmartLedsAdapter, smart_led_buffer};
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: <https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/app_image_format.html#application-description>
esp_bootloader_esp_idf::esp_app_desc!();

#[esp_hal::main]
fn main() -> ! {
    let peripherals = init();

    let mut led_buffer = smart_led_buffer!(1);
    let mut rgb_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 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);
        }
    }
}