created module for display

WIP
This commit is contained in:
2026-01-28 19:30:45 +01:00
parent 736ff352af
commit 4e9cd82bac
2 changed files with 38 additions and 16 deletions

26
src/display.rs Normal file
View File

@@ -0,0 +1,26 @@
use embedded_graphics::{
mono_font::{MonoTextStyle, ascii::{FONT_9X18_BOLD, FONT_10X20}},
pixelcolor::BinaryColor,
prelude::{DrawTarget, Point, *},
text::Text,
};
pub struct CoMoDisplay<D: DrawTarget<Color = BinaryColor>> {
display: D,
}
impl<D: DrawTarget<Color = BinaryColor>> CoMoDisplay<D> {
pub fn new(display: D) -> Self {
Self { display }
}
pub fn draw(&mut self) -> Result<(), D::Error> {
let text_style = MonoTextStyle::new(&FONT_10X20, BinaryColor::On);
self.display.clear(BinaryColor::Off)?;
Text::new("18,6 Ips", Point::new(50, 40), text_style).draw(&mut self.display)?;
Ok(())
}
}

View File

@@ -3,23 +3,21 @@
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_rp::{ use embassy_rp::{
bind_interrupts, gpio, Peri, bind_interrupts, gpio,
peripherals::USB, peripherals::USB,
spi::{self, Spi}, spi::{self, ClkPin, Instance, Spi},
usb::Driver, usb::Driver,
}; };
use embassy_time::Timer; use embassy_time::Timer;
use embedded_graphics::{ use embedded_graphics::prelude::DrawTargetExt;
mono_font::{MonoTextStyle, iso_8859_1::FONT_10X20},
pixelcolor::{BinaryColor, Rgb565, Rgb666},
prelude::{Point, *},
primitives::{Circle, PrimitiveStyle},
text::Text,
};
use embedded_hal_bus::spi::ExclusiveDevice; use embedded_hal_bus::spi::ExclusiveDevice;
use gpio::{Level, Output}; use gpio::{Level, Output};
use log::{error, info}; use log::error;
use mipidsi::{Builder, interface::SpiInterface, models::ST7789, options::ColorOrder}; use mipidsi::{Builder, interface::SpiInterface, models::ST7789};
use crate::display::CoMoDisplay;
mod display;
#[panic_handler] #[panic_handler]
fn panic(info: &core::panic::PanicInfo) -> ! { fn panic(info: &core::panic::PanicInfo) -> ! {
@@ -75,11 +73,9 @@ async fn main(spawner: Spawner) {
.init(&mut embassy_time::Delay) .init(&mut embassy_time::Delay)
.unwrap(); .unwrap();
display.clear(Rgb565::BLACK).unwrap(); let mut como_display = CoMoDisplay::new(display.color_converted());
Circle::new(Point::new(70, 100), 80)
.into_styled(PrimitiveStyle::with_fill(Rgb565::RED)) let _ = como_display.draw();
.draw(&mut display)
.unwrap();
loop { loop {
Timer::after_secs(1).await; Timer::after_secs(1).await;