Skip to main content

Meadow.Foundation.Displays.Il0398

Il0398
StatusStatus badge: working
Source codeGitHub
Datasheet(s)GitHub
NuGet packageNuGet Gallery for Meadow.Foundation.Displays.ePaper

The IL0398 is a tri-color display controller for ePaper displays. Data is sent to the controller via SPI and supports partial screen updates.

The IL0398 is commonly paired with 4.2" 400x300 tri-color ePaper display.

Sample projects available on GitHub

Code Example

Il0398 display;
MicroGraphics graphics;

public override Task Initialize()
{
Resolver.Log.Info("Initialize ...");

display = new Il0398(
spiBus: Device.CreateSpiBus(),
chipSelectPin: Device.Pins.D03,
dcPin: Device.Pins.D02,
resetPin: Device.Pins.D01,
busyPin: Device.Pins.D00);

graphics = new MicroGraphics(display)
{
Rotation = RotationType._270Degrees
};

return Task.CompletedTask;
}

public override Task Run()
{
Resolver.Log.Info("Run");

for (int i = 0; i < 100; i++)
{
graphics.DrawPixel(i, i, Color.Black);
}

graphics.DrawRectangle(10, 40, 160, 60, Color.Black, true);
graphics.DrawRectangle(20, 80, 200, 90, Color.Yellow, true);

graphics.CurrentFont = new Font12x16();
graphics.DrawText(2, 20, "Meadow F7", Color.Black);
graphics.DrawText(30, 50, "Yellow", Color.Yellow);
graphics.DrawText(50, 90, "Black", Color.Black);
graphics.DrawText(50, 120, "White", Color.White);

graphics.Show();

Resolver.Log.Info("Run complete");

return Task.CompletedTask;
}

Sample project(s) available on GitHub

Wiring Example

To control a IL0398 from Meadow, connect the following:

IL0398Meadow Pin
BUSYD15
RSTD14
DCD13
CSD12
CLKSCK
DINMOSI
GNDGND
3V33V3

If your display does not include any of the above pins, they can be omitted. Pass NULL into the constructor for the missing pin(s).

Wiring a IL0398 to a Meadow F7

Class Il0398

Represents an Il0398 ePaper color display 400x300, 4.2inch e-Ink three-color display, SPI interface

Assembly: EPaper.dll
View Source
Declaration
public class Il0398 : EPaperTriColorBase, ISpiPeripheral, IDisposable, IPixelDisplay, IDisplay

Inheritance: System.Object -> Meadow.Foundation.Displays.EPaperBase

Derived:
Meadow.Foundation.Displays.Epd4in2bc

Implements:
Meadow.Hardware.ISpiPeripheral, System.IDisposable, Meadow.Peripherals.Displays.IPixelDisplay, Meadow.Peripherals.Displays.IDisplay

Properties

IsBlackInverted

Does the display invert data for black pixels

View Source
Declaration
protected override bool IsBlackInverted { get; }

IsColorInverted

Does the display invert data for color pixels

View Source
Declaration
protected override bool IsColorInverted { get; }

Methods

Initialize()

Initialize the display

View Source
Declaration
protected override void Initialize()

SetPartialWindow(byte[], byte[], int, int, int, int)

Set partial window for display updates

View Source
Declaration
protected void SetPartialWindow(byte[] bufferBlack, byte[] bufferColor, int x, int y, int width, int height)
Parameters
TypeNameDescription
System.Byte[]bufferBlackThe buffer with black pixel data
System.Byte[]bufferColorThe buffer with color pixel data
System.Int32xThe x start position in pixels
System.Int32yThe y start position in pixels
System.Int32widthThe width to update in pixels
System.Int32heightThe height to update in pixels

SetPartialWindowBlack(byte[], int, int, int, int)

Set partial window for display updates

View Source
Declaration
protected void SetPartialWindowBlack(byte[] bufferBlack, int x, int y, int width, int height)
Parameters
TypeNameDescription
System.Byte[]bufferBlackThe buffer with black pixel data
System.Int32xThe x start position in pixels
System.Int32yThe y start position in pixels
System.Int32widthThe width to update in pixels
System.Int32heightThe height to update in pixels

SetPartialWindowColor(byte[], int, int, int, int)

Set partial window for display updates

View Source
Declaration
protected void SetPartialWindowColor(byte[] bufferColor, int x, int y, int width, int height)
Parameters
TypeNameDescription
System.Byte[]bufferColorThe buffer with color pixel data
System.Int32xThe x start position in pixels
System.Int32yThe y start position in pixels
System.Int32widthThe width to update in pixels
System.Int32heightThe height to update in pixels

Show(int, int, int, int)

Copy the display buffer to the display for a set region

View Source
Declaration
public override void Show(int left, int top, int right, int bottom)
Parameters
TypeNameDescription
System.Int32leftleft bounds of region in pixels
System.Int32toptop bounds of region in pixels
System.Int32rightright bounds of region in pixels
System.Int32bottombottom bounds of region in pixels

Show()

Copy the display buffer to the display

View Source
Declaration
public override void Show()

ClearFrame()

Clear the frame data from the SRAM, this doesn't update the display

View Source
Declaration
protected virtual void ClearFrame()

DisplayFrame()

Send a refresh command to the display Does not transfer new data

View Source
Declaration
public void DisplayFrame()

Sleep()

Set the device to low power mode

View Source
Declaration
protected virtual void Sleep()

Implements

  • Meadow.Hardware.ISpiPeripheral
  • System.IDisposable
  • Meadow.Peripherals.Displays.IPixelDisplay
  • Meadow.Peripherals.Displays.IDisplay