Files
jerryboard-two/src/main.rs
T

59 lines
1.6 KiB
Rust
Raw Normal View History

2026-09-07 18:35:36 -05:00
#![no_std]
#![no_main]
mod backlight;
mod led;
use esp_backtrace as _;
use esp_bootloader_esp_idf::esp_app_desc;
use esp_hal::{init, rmt::Rmt, time::Rate, Config};
use esp_println::println;
use smart_leds::hsv::{hsv2rgb, Hsv};
use smart_leds::{brightness, gamma};
esp_app_desc!();
#[esp_hal::main]
fn main() -> ! {
let peripherals = init(Config::default());
let mut led = {
let rmt = Rmt::new(peripherals.RMT, Rate::from_mhz(80)).expect("Failed to init RMT");
led::RgbLed::new(rmt.channel0, peripherals.GPIO8).expect("Failed to init RGB LED")
};
2026-09-07 18:46:42 -05:00
let (_ledc, timer) =
backlight::setup_timer(peripherals.LEDC).expect("Failed to init backlight timer");
2026-09-07 18:35:36 -05:00
let mut backlight =
backlight::LcdBacklight::new(&timer, peripherals.GPIO22).expect("Failed to init backlight");
let delay = esp_hal::delay::Delay::new();
let levels = [1.0f32, 0.75, 0.5, 0.25, 0.0, 0.5];
let mut level_idx = 0;
loop {
for hue in 0..=255 {
let rgb = hsv2rgb(Hsv {
hue,
sat: 255,
val: 255,
});
let lit = brightness(gamma(core::iter::once(rgb)), 40)
.next()
.unwrap();
led.set_rgb(lit).unwrap();
if hue % 32 == 0 {
println!("hue {hue}: ({}, {}, {})", lit.r, lit.g, lit.b);
}
delay.delay_millis(10);
}
let level = levels[level_idx % levels.len()];
backlight.set_level(level).unwrap();
println!("backlight level: {level}");
level_idx += 1;
}
}