//! Place a bitmap image on the screen. Convert png to .bmp //! * Resize and export images directly from image editor by saving as .bmp and //! choosing 16bit R5 G6 B5 //! * OR Convert with imagemagick: convert rustacean-flat-noshadow.png -type //! truecolor -define bmp:subtype=RGB565 -depth 16 -strip -resize 86x64 //! ferris.bmp #![no_std] #![no_main] use bsp::{entry, hal, pac, Pins}; #[cfg(not(feature = "panic_led"))] use panic_halt as _; use pygamer as bsp; use embedded_graphics::prelude::*; use embedded_graphics::primitives::{PrimitiveStyleBuilder, Rectangle}; use embedded_graphics::{image::Image, pixelcolor::Rgb565}; use hal::clock::GenericClockController; use pac::{CorePeripherals, Peripherals}; use tinybmp::Bmp; #[entry] fn main() -> ! { let mut peripherals = Peripherals::take().unwrap(); let core = CorePeripherals::take().unwrap(); let mut clocks = GenericClockController::with_internal_32kosc( peripherals.gclk, &mut peripherals.mclk, &mut peripherals.osc32kctrl, &mut peripherals.oscctrl, &mut peripherals.nvmctrl, ); let pins = Pins::new(peripherals.port).split(); let mut delay = hal::delay::Delay::new(core.SYST, &mut clocks); let (mut display, _backlight) = pins .display .init( &mut clocks, peripherals.sercom4, &mut peripherals.mclk, peripherals.tc2, &mut delay, ) .unwrap(); // black out the screen Rectangle::with_corners(Point::new(0, 0), Point::new(160, 128)) .into_styled( PrimitiveStyleBuilder::new() .fill_color(Rgb565::BLACK) .build(), ) .draw(&mut display) .unwrap(); let raw_image: Bmp = Bmp::from_slice(include_bytes!("../assets/ferris.bmp")).unwrap(); let ferris = Image::new(&raw_image, Point::new(32, 32)); ferris.draw(&mut display).unwrap(); loop {} }