#oled #embedded-graphics #async #spi-driver #no-std #sh11

no-std oled_async

各种OLED显示控制器的驱动程序。例如,SH110x SSD130X与嵌入式图形一起工作

1 个不稳定版本

0.1.0 2024年5月12日

#1632嵌入式开发

每月25次下载

MIT/Apache

4.5MB
774

SH1106驱动程序

Crates.io Docs.rs

SH1107 SPI and I2C display modules showing the Rust logo

SH11xx和SSD1xxx OLED显示器的I2C和SPI驱动程序,100%用Rust编写

文档

[示例]

此crate使用 probe-run 运行示例。一旦设置好,它应该像这样简单:cargo run --example image --features=embassy-stm32 --features=spi --release。某些示例需要 --release 来减少FLASH使用。

来自 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;
    }
}

许可

根据以下之一获得许可

由您选择。

贡献

除非您明确声明,否则您提交的任何有意包含在本作品中的贡献,根据Apache-2.0许可证定义,应按上述方式双许可,不附加任何额外条款或条件。

依赖项

~0–43MB
~1.5M SLoC