Remarks
Il0398 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
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:
IL0398 | Meadow Pin |
---|---|
BUSY | D15 |
RST | D14 |
DC | D13 |
CS | D12 |
CLK | SCK |
DIN | MOSI |
GND | GND |
VCC | 3V3 |
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).
Syntax
public class Il0398 : EPaperTriColorBase, IGraphicsDisplay
Constructors
Il0398(ISpiBus, IDigitalOutputPort, IDigitalOutputPort, IDigitalOutputPort, IDigitalInputPort)
Create a new Il0398 ePaper 400x300 pixel display object
Declaration
public Il0398(ISpiBus spiBus, IDigitalOutputPort chipSelectPort, IDigitalOutputPort dataCommandPort, IDigitalOutputPort resetPort, IDigitalInputPort busyPort)
Parameters
Type | Name | Description |
---|---|---|
ISpiBus | spiBus | SPI bus connected to display |
IDigitalOutputPort | chipSelectPort | Chip select output port |
IDigitalOutputPort | dataCommandPort | Data command output port |
IDigitalOutputPort | resetPort | Reset output port |
IDigitalInputPort | busyPort | Busy input port |
Il0398(ISpiBus, IPin, IPin, IPin, IPin)
Create a new Il0398 400x300 pixel display object
Declaration
public Il0398(ISpiBus spiBus, IPin chipSelectPin, IPin dcPin, IPin resetPin, IPin busyPin)
Parameters
Type | Name | Description |
---|---|---|
ISpiBus | spiBus | SPI bus connected to display |
IPin | chipSelectPin | Chip select pin |
IPin | dcPin | Data command pin |
IPin | resetPin | Reset pin |
IPin | busyPin | Busy pin |
Properties
IsBlackInverted
Does the display invert data for black pixels
Declaration
protected override bool IsBlackInverted { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Overrides
IsColorInverted
Does the display invert data for color pixels
Declaration
protected override bool IsColorInverted { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Overrides
Methods
ClearFrame()
Clear the frame data from the SRAM, this doesn't update the display
Declaration
protected virtual void ClearFrame()
DisplayFrame()
Send a refresh command to the display Does not transfer new data
Declaration
public void DisplayFrame()
Initialize()
Initalize the display
Declaration
protected override void Initialize()
Overrides
SetPartialWindow(Byte[], Byte[], Int32, Int32, Int32, Int32)
Set partial window for display updates
Declaration
protected void SetPartialWindow(byte[] bufferBlack, byte[] bufferColor, int x, int y, int width, int height)
Parameters
Type | Name | Description |
---|---|---|
System.Byte[] | bufferBlack | The buffer with black pixel data |
System.Byte[] | bufferColor | The buffer with color pixel data |
System.Int32 | x | The x start position in pixels |
System.Int32 | y | The y stary position in pixels |
System.Int32 | width | The width to update in pixels |
System.Int32 | height | The height to update in pixels |
SetPartialWindowBlack(Byte[], Int32, Int32, Int32, Int32)
Set partial window for display updates
Declaration
protected void SetPartialWindowBlack(byte[] bufferBlack, int x, int y, int width, int height)
Parameters
Type | Name | Description |
---|---|---|
System.Byte[] | bufferBlack | The buffer with black pixel data |
System.Int32 | x | The x start position in pixels |
System.Int32 | y | The y stary position in pixels |
System.Int32 | width | The width to update in pixels |
System.Int32 | height | The height to update in pixels |
SetPartialWindowColor(Byte[], Int32, Int32, Int32, Int32)
Set partial window for display updates
Declaration
protected void SetPartialWindowColor(byte[] bufferColor, int x, int y, int width, int height)
Parameters
Type | Name | Description |
---|---|---|
System.Byte[] | bufferColor | The buffer with color pixel data |
System.Int32 | x | The x start position in pixels |
System.Int32 | y | The y stary position in pixels |
System.Int32 | width | The width to update in pixels |
System.Int32 | height | The height to update in pixels |
Show()
Copy the display buffer to the display
Declaration
public override void Show()
Overrides
Show(Int32, Int32, Int32, Int32)
Copy the display buffer to the display for a set region
Declaration
public override void Show(int left, int top, int right, int bottom)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | left | left bounds of region in pixels |
System.Int32 | top | top bounds of region in pixels |
System.Int32 | right | right bounds of region in pixels |
System.Int32 | bottom | bottom bounds of region in pixels |
Overrides
Sleep()
Set the device to low power mode
Declaration
protected virtual void Sleep()