Crate ssd1306[][src]

Expand description

SSD1306 OLED display driver.

This crate provides a driver interface to the popular SSD1306 monochrome OLED display driver. It supports I2C and SPI via the display_interface crate.

The main driver is created using Ssd1306::new which accepts an interface instance, display size, rotation and mode. The following display modes are supported:

  • BasicMode - A simple mode with lower level methods available.
  • BufferedGraphicsMode - A framebuffered mode with additional methods and integration with embedded-graphics.
  • TerminalMode - A bufferless mode supporting drawing text to the display, as well as setting cursor positions like a simple terminal.

Examples

Examples can be found in the examples/ folder

Draw some text to the display

Uses BufferedGraphicsMode and embedded_graphics. See the complete example here.

use embedded_graphics::{
    mono_font::{ascii::FONT_6X10, MonoTextStyleBuilder},
    pixelcolor::BinaryColor,
    prelude::*,
    text::{Baseline, Text},
};
use ssd1306::{mode::BufferedGraphicsMode, prelude::*, I2CDisplayInterface, Ssd1306};

let interface = I2CDisplayInterface::new(i2c);
let mut display = Ssd1306::new(
    interface,
    DisplaySize128x64,
    DisplayRotation::Rotate0,
).into_buffered_graphics_mode();
display.init().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().unwrap();

Write text to the display without a framebuffer

Uses TerminalMode. See the complete example here.

use core::fmt::Write;
use ssd1306::{mode::TerminalMode, prelude::*, I2CDisplayInterface, Ssd1306};

let interface = I2CDisplayInterface::new(i2c);

let mut display = Ssd1306::new(
    interface,
    DisplaySize128x64,
    DisplayRotation::Rotate0,
).into_terminal_mode();
display.init().unwrap();
display.clear().unwrap();

// Spam some characters to the display
for c in 97..123 {
    let _ = display.write_str(unsafe { core::str::from_utf8_unchecked(&[c]) });
}
for c in 65..91 {
    let _ = display.write_str(unsafe { core::str::from_utf8_unchecked(&[c]) });
}

// The `write!()` macro is also supported
write!(display, "Hello, {}", "world");

Modules

Display commands.

Display modes.

Crate prelude

Display rotation.

Display size.

Structs

Helper struct to create preconfigured I2C interfaces for the display.

SSD1306 driver.