4 releases

new 0.1.3 May 13, 2024
0.1.2 May 12, 2024
0.0.2 Mar 30, 2024

#1520 in Embedded development

Download history 261/week @ 2024-03-11 7/week @ 2024-03-18 143/week @ 2024-03-25 66/week @ 2024-04-01 119/week @ 2024-04-29 195/week @ 2024-05-06

314 downloads per month

GPL-3.0 license

23KB
280 lines

SSD1315

The SSD1315 OLED driver.

Compatibility

This driver is developed for SSD1315, but it is also theoretically compatible with SSD1306. Please note that SSD1315 doesn't support parallel ports like 6800 and 8080, which means you cannot use parallel ports when using this crate.

As developed from scratch, this driver supports new features provided in embedded-hal 1.0.0, but that also means this driver doesn't compatible with older hal libraries (e.g. stm32f1xx-hal, which hasn't adopted embedded-hal 1.0.0 yet).

Example

Here is a full example (The MCU model is STM32F411CEU6):

#![deny(unsafe_code)]
#![no_std]
#![no_main]

use cortex_m::asm::nop;
use cortex_m_rt::entry;
use embedded_graphics::{
    pixelcolor::BinaryColor,
    prelude::*,
    primitives::{Circle, PrimitiveStyle},
};
use panic_halt as _;
use ssd1315::*;
use stm32f4xx_hal::{
    i2c::{DutyCycle, Mode},
    pac,
    prelude::*,
};

#[entry]
fn main() -> ! {
    let dp = pac::Peripherals::take().unwrap();

    let rcc = dp.RCC.constrain();
    let clocks = rcc.cfgr.freeze();

    let gpiob = dp.GPIOB.split();
    let (scl, sda) = (
        gpiob.pb8.into_alternate_open_drain(),
        gpiob.pb9.into_alternate_open_drain(),
    );

    let i2c = dp.I2C1.i2c(
        (scl, sda),
        Mode::fast(400000.Hz(), DutyCycle::Ratio2to1),
        &clocks,
    );

    let interface = interface::I2cDisplayInterface::new_interface(i2c);
    let config = config::Ssd1315DisplayConfig::preset_config();

    let mut display = Ssd1315::new(interface);
    display.set_custom_config(config);

    Circle::new(Point::new(1, 1), 40)
        .into_styled(PrimitiveStyle::with_fill(BinaryColor::On))
        .draw(&mut display)
        .unwrap();

    display.init_screen();
    display.flush_screen();

    loop {
        nop()
    }
}

License

This software is distributed under GPL-3.0 license.

Contribution

Contributions to this project are welcome! If you find anywhere contains bugs, please open an issue or commit a pull request.

Dependencies

~3.5MB
~37K SLoC