Wrote test code

This commit is contained in:
Zac Wilson 2025-07-05 14:17:14 +01:00
parent f2f8705eff
commit de3519cfe3
2 changed files with 94 additions and 0 deletions

View file

@ -18,6 +18,8 @@ experimental = ["esp-idf-svc/experimental"]
[dependencies]
log = "0.4"
esp-idf-svc = { version = "0.51", features = ["critical-section", "embassy-time-driver", "embassy-sync"] }
cardputer-bsc = { version = "0.1.0", path = "../cardputer-bsc" }
embedded-graphics-core = "0.4.0"
[build-dependencies]
embuild = "0.33"

View file

@ -1,3 +1,14 @@
use std::{thread::sleep, time::Duration};
use cardputer_bsc::display::{DISPLAY_SIZE_HEIGHT, DISPLAY_SIZE_WIDTH};
use embedded_graphics_core::pixelcolor::Rgb565;
use esp_idf_svc::hal::{
ledc::{self, config::TimerConfig, LedcDriver, LedcTimerDriver, SpeedMode},
prelude::Peripherals,
rmt::config::DutyPercent,
units::Hertz,
};
fn main() {
// It is necessary to call this function once. Otherwise some patches to the runtime
// implemented by esp-idf-sys might not link properly. See https://github.com/esp-rs/esp-idf-template/issues/71
@ -7,4 +18,85 @@ fn main() {
esp_idf_svc::log::EspLogger::initialize_default();
log::info!("Hello, world!");
let Ok(peripherals) = Peripherals::take() else {
return;
};
let mut display = match cardputer_bsc::display::build(
peripherals.spi2,
peripherals.pins.gpio36,
peripherals.pins.gpio35,
peripherals.pins.gpio37,
peripherals.pins.gpio34,
peripherals.pins.gpio33,
) {
Ok(display) => display,
Err(e) => {
log::error!("Failed to initialise display: {e}");
return;
}
};
let timer_config = TimerConfig::new()
.resolution(ledc::Resolution::Bits8)
.frequency(Hertz(256).into());
let bl_timer_driver = match LedcTimerDriver::new(peripherals.ledc.timer3, &timer_config) {
Ok(bl_timer_driver) => bl_timer_driver,
Err(e) => {
log::error!("Failed to create backlight timer: {e}");
return;
}
};
let mut bl_driver = match LedcDriver::new(
peripherals.ledc.channel7,
bl_timer_driver,
peripherals.pins.gpio38,
) {
Ok(bl_driver) => bl_driver,
Err(e) => {
log::error!("Failed to create backlight driver: {e}");
return;
}
};
dbg!(display.is_sleeping());
display.set_pixels(
0,
0,
DISPLAY_SIZE_WIDTH - 1,
DISPLAY_SIZE_HEIGHT - 1,
std::iter::repeat_n(
Rgb565::new(0, 0, 0),
DISPLAY_SIZE_WIDTH as usize * DISPLAY_SIZE_HEIGHT as usize,
),
);
let _ = display
.set_pixels(
10,
10,
19,
39,
std::iter::repeat_n(Rgb565::new(0b00011111, 0, 0), 300),
)
.inspect_err(|e| log::error!("Failed to set pixels: {e:?}"));
match bl_driver.set_duty(bl_driver.get_max_duty()) {
Ok(_) => (),
Err(e) => {
log::error!("Failed to set duty: {e}");
return;
}
};
match bl_driver.enable() {
Ok(_) => (),
Err(e) => {
log::error!("Failed to enable driver: {e}");
return;
}
};
loop {
sleep(Duration::from_secs(1));
}
}