Crates.io | oled_async |
lib.rs | oled_async |
version | 0.1.0-alpha1 |
source | src |
created_at | 2024-05-12 03:12:05.32831 |
updated_at | 2024-05-12 03:46:39.53216 |
description | Driver for various OLED display controllers. e.g. SH110x SSD130X works with embedded-graphics |
homepage | |
repository | https://github.com/cschuhen/oled_drivers |
max_upload_size | |
id | 1237202 |
size | 4,624,481 |
I2C and SPI driver for the SH11xx and SSD1xxx OLED displays written in 100% Rust
This crate uses probe-run
to run the examples. Once set up,
it should be as simple as cargo run --example image --features=embassy-stm32 --features=spi --release
. --release
will be
required for some examples to reduce FLASH usage.
From examples/text.rs
:
#![no_std]
#![no_main]
mod bsp;
use embassy_executor::Spawner;
use embedded_graphics::{
mono_font::{ascii::FONT_6X10, MonoTextStyleBuilder},
pixelcolor::BinaryColor,
prelude::*,
text::{Baseline, Text},
};
use embedded_hal_async::delay::DelayNs;
use oled_async::{prelude::*, Builder};
use {defmt_rtt as _, panic_probe as _};
#[embassy_executor::main]
async fn main(_spawner: Spawner) {
let (di, mut reset, mut delay) = bsp::board::get_board();
type Display = oled_async::displays::sh1107::Sh1107_128_128;
//type Display = oled_async::displays::sh1108::Sh1108_64_160;
//type Display = oled_async::displays::ssd1309::Ssd1309_128_64;
let raw_disp = Builder::new(Display {})
.with_rotation(crate::DisplayRotation::Rotate180)
.connect(di);
let mut display: GraphicsMode<_, _, { 128 * 128 / 8 }> = raw_disp.into();
display.reset(&mut reset, &mut delay).unwrap();
display.init().await.unwrap();
display.clear();
display.flush().await.unwrap();
let text_style = MonoTextStyleBuilder::new()
.font(&FONT_6X10)
.text_color(BinaryColor::On)
.build();
Text::with_baseline("Hello world!", Point::zero(), text_style, Baseline::Top)
.draw(&mut display)
.unwrap();
Text::with_baseline("Hello Rust!", Point::new(0, 16), text_style, Baseline::Top)
.draw(&mut display)
.unwrap();
display.flush().await.unwrap();
loop {
delay.delay_ms(1000).await;
}
}
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.