diff --git a/src/bin/main.rs b/src/bin/main.rs index 764e860..cd781fc 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -15,20 +15,13 @@ use base64::{Engine as _, engine::general_purpose}; use display_interface_spi::SPIInterface; use embassy_executor::Spawner; use embassy_time::Timer; -use display_interface_spi::SPIInterface; -use embedded_graphics::{Drawable, geometry::Size, primitives::Rectangle}; -use embedded_graphics::Pixel; use embedded_graphics::mono_font::MonoTextStyle; use embedded_graphics::mono_font::ascii::FONT_6X10; use embedded_graphics::pixelcolor::Rgb565; use embedded_graphics::prelude::Point; use embedded_graphics::prelude::RgbColor; use embedded_graphics::text::Text; -use embedded_graphics::{ - Drawable, - prelude::*, - primitives::{PrimitiveStyle, Rectangle}, -}; +use embedded_graphics::{Drawable, geometry::Size, primitives::Rectangle}; use embedded_graphics_core::draw_target::DrawTarget; use embedded_hal_bus::spi::ExclusiveDevice; use esp_hal::clock::CpuClock; @@ -451,11 +444,18 @@ where let color = palette565[color_index as usize]; + let start_x = (x * scale) as i32; + let start_y = (y * scale) as i32; + let end_x = core::cmp::min(start_x + scale as i32, target_width as i32); + let end_y = core::cmp::min(start_y + scale as i32, target_width as i32); + let width = u32::try_from(end_x - start_x).unwrap(); let height = u32::try_from(end_y - start_y).unwrap(); - let area = Rectangle::new(Point::new(start_x.try_into().unwrap(), start_y.try_into().unwrap()), Size::new(width, height)); - + let area = Rectangle::new( + Point::new(start_x.try_into().unwrap(), start_y.try_into().unwrap()), + Size::new(width, height), + ); let _ = ili9341.fill_solid(&area, color); } @@ -621,15 +621,12 @@ async fn main(spawner: Spawner) { esp_hal::interrupt::software::SoftwareInterruptControl::new(peripherals.SW_INTERRUPT); esp_rtos::start(timg0.timer0, sw_interrupt.software_interrupt0); - let freq = Rate::from_khz(60_000); info!("Display freq: {freq}"); let spi_bus = Spi::new( peripherals.SPI2, - Config::default() - .with_frequency(freq) - .with_mode(Mode::_0), + Config::default().with_frequency(freq).with_mode(Mode::_0), ) .unwrap() .with_sck(peripherals.GPIO36)