A small 2D graphics library to draw things on embedded graphical LCDs, like the SSD1306 OLED display.
It currently only supports monochrome displays. Contributions to support full colour as well are very welcome!
Example from the SSD1306 driver:
```rust
extern crate cortexm; extern crate embeddedgraphics; extern crate embeddedhal as hal; extern crate panicabort; extern crate ssd1306; extern crate stm32f103xxhal as bluepill;
use bluepill::i2c::{DutyCycle, I2c, Mode}; use bluepill::prelude::; use embedded_graphics::image::Image1BPP; use embedded_graphics::prelude::; use ssd1306::{mode::GraphicsMode, Builder};
fn main() { let dp = bluepill::stm32f103xx::Peripherals::take().unwrap(); let mut flash = dp.FLASH.constrain(); let mut rcc = dp.RCC.constrain(); let clocks = rcc.cfgr.freeze(&mut flash.acr); let mut afio = dp.AFIO.constrain(&mut rcc.apb2); let mut gpiob = dp.GPIOB.split(&mut rcc.apb2); let scl = gpiob.pb8.intoalternateopendrain(&mut gpiob.crh); let sda = gpiob.pb9.intoalternateopen_drain(&mut gpiob.crh);
let i2c = I2c::i2c1(
dp.I2C1,
(scl, sda),
&mut afio.mapr,
Mode::Fast {
frequency: 400_000,
duty_cycle: DutyCycle::Ratio1to1,
},
clocks,
&mut rcc.apb1,
);
let im = Image1BPP::new(include_bytes!("./rust.raw"), 64, 64).translate((32, 0));
let mut disp: GraphicsMode<_> = Builder::new().connect_i2c(i2c).into();
disp.init().unwrap();
disp.flush().unwrap();
disp.draw(im.into_iter());
disp.flush().unwrap();
} ```
&[u8]
s
&[u8]
s (downsampled badly to 1BPP)All source font PNGs are taken from the excellent Uzebox Wiki page.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.