ssd1306
is a no-std driver written in Rust for the popular
SSD1306 monochrome OLED display.
Unreleased - ReleaseDate
0.9.0 - 2024-08-30
- Updated dependencies for
embedded-hal
1.0.0. - Switch examples to embassy STM32 PAC which implements
embedded-hal
1.0.0 traits. - Add an asynchronous interface, enabled via the
async
feature. - (breaking) Increased MSRV to 1.75.0
- #203 Added
Ssd1306::release(self)
to release the contained i2c interface.
- #212 Switch from circleci to github actions. Adjust urls now repository is hosted on rust-embedded-community. Update code and config for modern rust and tools
0.8.4 - 2023-10-27
- #201 Fixed
BufferedGraphicsMode::clear(On)
such that it fills all pixels withOn
, not only some.
0.8.3 - 2023-10-09
- #195 Changed
BasicMode::clear
to clear in small batches instead of one big write. This drops RAM requirement by ~900b and fixes issues on MCUs with less than 1Kb of RAM. - #195 Changed
TerminalMode
to use lookup by ASCII code instead of per-character match when searching for glyph. This may save up to 3.5Kb of compiled code on AVR MCUs.
0.8.2 - 2023-09-29
- #197 Fixed terminal mode panic and wrapping behaviour for rotated displays.
0.8.1 - 2023-08-18
- #190 Added
Ssd1306::set_invert
to invert the screen pixels
0.8.0 - 2023-06-01
- #183
Brightness::custom()
is now publicly available.
- #177 Fixed a few spelling mistakes.
- (breaking) #184 Increased MSRV to 1.61.0
- (breaking) #179 Changed
Ssd1306::reset
signature. - #181 Update embedded-graphics-core dependency to 0.4
- (breaking) #185 The inherent
BufferedGraphicsMode::clear
has been renamed toclear_buffer
. - #185 Some methods no longer require
DI: WriteOnlyDataCommand
.
0.7.1 - 2022-08-15
- #161 Added a
set_mirror
method to enable or disable display mirroring. - #166 Added
DisplaySize
configuration for 64x32 displays.
0.7.0 - 2021-07-08
- (breaking) #158 Migrate away from
generic-array
to a solution using const generics. This raises the crate MSRV to 1.51.
0.6.0 - 2021-06-22
-
(breaking) #156 Migrate from
embedded-graphics
toembedded-graphics-core
. -
(breaking) #150
BufferedGraphicsMode::set_pixel
now accepts abool
instead of au8
for the pixel color value. -
(breaking) #150
display_on
is now calledset_display_on
. -
(breaking) #150
TerminalMode::get_position
is now calledposition
to conform with Rust API guidelines. -
(breaking) #150 Refactor the crate API to be more versatile and to make code clearer to understand.
A graphics mode initialisation now looks like this:
use ssd1306::{prelude::*, I2CDisplayInterface, Ssd1306}; let interface = I2CDisplayInterface::new(i2c); let mut display = Ssd1306::new(interface, DisplaySize128x64, DisplayRotation::Rotate0) .into_buffered_graphics_mode(); display.init().unwrap();
0.5.2 - 2021-04-19
0.5.1 - 2021-01-09
0.5.0 - 2020-12-21
0.4.2 - 2020-12-15 (yanked)
- (breaking) #139 Removed default display size type parameters.
- #141 72x40 displays can now be set to higher brightnesses, matching other sizes.
0.4.1 - 2020-12-01
- #137 Replaced
TerminalMode
font with a new, more consistent one. This now uses thezxpix
font from https://jared.geek.nz/2014/jan/custom-fonts-for-microcontrollers.
0.4.0 - 2020-08-03
- #121 Added brightness control with the
set_brightness()
method. - #118
DisplayModeTrait::into_properties()
new method that consumes the driver and returns theDisplayProperties
- (breaking) #129
TerminalMode::set_rotation
now resets the cursor position - (breaking) #125 Redesigned display size handling.
- (breaking) #126 Moved
reset
method toDisplayModeTrait
. If the prelude is not used, add eitheruse ssd1306::prelude::*
orssd1306::mode::displaymode::DisplayModeTrait
to your imports. - (breaking) #119 Remove
DisplayMode
andRawMode
- #120 Update to v0.4
display-interface
- (breaking) #118 Change
release
method to return the display interface instead of theDisplayProperties
. - (breaking) #116 Replace custom I2C and SPI
interfaces by generic
display-interface
- (breaking) #113 Removed public
send_bounded_data
from DisplayInterface and implementations
- #129 Fixed
Rotate90
andRotate270
rotation modes forTerminalMode
0.3.1 - 2020-03-21
- Fix docs.rs build config
0.3.0 - 2020-03-20
- #111 Fix TerminalMode offset for smaller displays.
- #111 Add support for modules with a 64x48px display size.
- (breaking) #112 Upgrade to embedded-graphics 0.6.0
- #107 Migrate from Travis to CircleCI
- #105 Reduce flash usage by around 400 bytes by
replacing some internal
unwrap()
s withas
coercions. - #106 Optimise internals by using iterators to
elide bounds checks. Should also speed up
GraphicsMode
(andembedded-graphics
operations) with a cleaned-upset_pixel
. - #108 Add an example using
DisplayProperties.draw()
to send a raw buffer of random bytes to the display over I2C.
0.3.0-alpha.4 - 2020-02-07
- #101 Add support for modules with a 72x40px
display size. These are often advertised as 70x40px displays which are likely the same hardware.
An example is also added -
graphics_i2c_72x40
.
- Fix docs.rs build by targeting
x86_64-unknown-linux-gnu
- (breaking) Upgrade embedded-graphics from
0.6.0-alpha.2
to version0.6.0-alpha.3
- #106 Switch out some
for
loops for iterators internally to speed up data transfers and reduce code size in--release
mode.
0.3.0-alpha.3 - 2020-02-03
- #97 Use the new
Triangle
primitive from Embedded Graphics 0.6.0-alpha.2 in the three SSD1306graphics*.rs
examples - #103 Pin embedded-graphics version to 0.6.0-alpha.2
- #80
TerminalMode
now has a cursor. Newlines (\n
) and carriage returns (\r
) are now supported.
- #94 Programs that only change some parts of the display should now run much faster. The driver keeps track of changed pixels and only sends a bounding box of updated pixels instead of updating the entire display every time.
- (breaking) Upgraded to Embedded Graphics 0.6.0-alpha.2
- Added a changelog!
- Display power control (#86) - call
.display_on(true)
or.display_on(false)
to turn on or off the display respectively.
- Doc examples are now tested in CI (#89)
- Builder docs clarify the order of method calls (#89)