nanoFramework.Iot.Device.ePaper 1.0.416
前缀已保留
dotnet add package nanoFramework.Iot.Device.ePaper --version 1.0.416
NuGet\Install-Package nanoFramework.Iot.Device.ePaper -Version 1.0.416
<PackageReference Include="nanoFramework.Iot.Device.ePaper" Version="1.0.416" />
paket add nanoFramework.Iot.Device.ePaper --version 1.0.416
#r "nuget: nanoFramework.Iot.Device.ePaper, 1.0.416"
// Install nanoFramework.Iot.Device.ePaper as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.ePaper&version=1.0.416 // Install nanoFramework.Iot.Device.ePaper as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.ePaper&version=1.0.416
.NET nanoFramework 的 ePaper 驱动器
这是一个 C# 库,它为 nanoFramework 带来了对各种 ePaper 显示器的支持。它包含图形库,提供了用于绘制文本、线条和形状的 API。
当前支持 ePaper 显示器
市面上有多种 EPD 显示控制器。以下是我们支持的控制板。未来版本中将支持更多控制板。
- SSD1681: 200 源、200 门红/黑/白有源矩阵 EPD 显示驱动器和控制器。 数据表
即将支持
- SSD1680: 176 源 x 296 门红/黑/白有源矩阵 EPD 显示驱动器和控制器。
- UC8151D: 白色/黑色/红色点阵微杯 ESL 的集成驱动器 IC 加时序控制器。
- 还有更多...
电路
EPaper 显示器使用 3 条线(或 4 条线)SPI
与 MCU
通信。供电电压根据显示器和控制器而变化。有关更多信息,请参阅数据表。
上面的电路图展示了基于SSD1681
控制器的ePaper显示屏,并连接到了ESP32开发板。显示屏使用3线SPI
进行通信,需要3.3V电压。此外,还连接了数据/命令、复位和忙信号引脚,因为这些引脚对于初始化显示屏和向其发送命令和数据是必需的。
请参阅您的开发板的引脚排布和显示屏控制器数据手册以获取更多信息。上面的设置可能不适用于您的特定板子和/或显示屏。
“Hello World”示例
以下代码示例展示了如何使用包含的图形库将著名的Hello World
消息写入显示屏。
首先创建一个新的nanoFramework项目并引用此库。用以下内容替换Main
的内容
// Create an instance of the GPIO Controller.
// The display driver uses this to open pins to the display device.
// You could also pass null to Ssd1681 instead of a GpioController instance and it will make one for you.
using var gpioController = new GpioController();
// Setup SPI connection with the display
var spiConnectionSettings = new SpiConnectionSettings(busId: 1, chipSelectLine: 22)
{
ClockFrequency = Ssd1681.SpiClockFrequency,
Mode = Ssd1681.SpiMode,
ChipSelectLineActiveState = false,
Configuration = SpiBusConfiguration.HalfDuplex,
DataFlow = DataFlow.MsbFirst
};
using var spiDevice = new SpiDevice(spiConnectionSettings);
// Create an instance of the display driver
using var display = new Ssd1681(
spiDevice,
resetPin: 15,
busyPin: 4,
dataCommandPin: 5,
width: 200,
height: 200,
gpioController,
enableFramePaging: true,
shouldDispose: false);
// Power on the display and initialize it
display.PowerOn();
display.Initialize();
// clear the display
display.Clear(triggerPageRefresh: true);
// initialize the graphics library
using var gfx = new Graphics(display)
{
DisplayRotation = Rotation.Default
};
// a simple font to use
// you can make use your own font by implementing IFont interface
var font = new Font8x12();
// write text to the internal graphics buffer
gfx.DrawText("Hello World", font, x: 0, y: 0, Color.Black);
// flush the buffer to the display and then initiate the refresh sequence
display.Flush();
display.PerformFullRefresh();
// Done! now put the display to sleep to reduce its power consumption
display.PowerDown(Ssd1681.SleepMode.DeepSleepModeTwo);
请参考SSD1681
示例项目来获取使用驱动器和图形库的更完整示例。该示例项目的结果是将在显示屏上绘制以下内容
图形库特性
图形库与驱动器是分开的。所有驱动程序都应该实现IePaperDisplay
接口。这允许图形库与任何驱动器进行通信。
分页帧绘制
除了支持绘制文本、线条、一些形状和原始位图外,图形库还支持在低内存条件下使用分页帧绘制。
一个200x200的黑白显示屏大约需要5KB(200 x 200 / 8)的帧缓冲区来存储在RAM中。如果启用分页帧绘制,帧将被分成5页,任何时候只有1页存在于RAM中。这使得此库的RAM需求降至约1KB(还有一些额外的、固定的分配用于其他原始字段)。
然而,启用分页帧绘制可能会增加绘制一帧的时间。你可以使用一些技巧来加快分页帧绘制,但速度仍会比非分页绘制慢。
- 尽量将绘图操作το一个单独的帧页内。对于高度为200像素的显示屏,帧页将为200像素宽、40像素高。如果你的绘制操作小于40像素高,它将适合在那个页面内。
- 图形库在
IFrameBuffer
对象中提供了一个API(IsRangeWithinFrameBuffer(Point, Point)
)用以检查一系列点是否适合在页内。使用此API结合第一个点可以提高绘制速度。
有关为什么需要这一点以及一些限制的信息,请参阅图片循环。有关API和加速技巧的详细信息,请参阅SSD1681
示例项目。
最后,这完全取决于你的硬件。如果你的MCU有足够的RAM来存储显示屏的整个帧缓冲区,且你的软件不需要这个RAM,则考虑关闭此功能。
字体
图形库包含一个ASCII,8x12的字体(字符宽度为8像素、高度为12像素)。这样做是为了减少此库所需的存储空间。如果你需要使用不同的字体(不同语言、大小、样式等),你可以通过实现IFont
接口来自定义字体。
像The Dot Factory这样的软件可以帮助你将机器上现有的字体转换为兼容的字节数组表示。
旋转
库支持根据显示屏的旋转来旋转帧。
高级
虽然驱动类旨在使在项目中使用电子纸变得容易,但它们不会隐藏或阻止你对它们的函数有更多控制。所有驱动程序都提供了公开的辅助方法,以便可以在需要时向显示屏控制器发送原始命令和数据。首先要参考控制器数据手册。
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET 框架 | net 兼容。 |
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Graphics.Core (>= 1.2.15)
- nanoFramework.Runtime.Events (>= 1.11.18)
- nanoFramework.System.Device.Gpio (>= 1.1.41)
- nanoFramework.System.Device.Spi (>= 1.3.52)
- nanoFramework.System.Threading (>= 1.1.32)
NuGet 包
此包未被任何 NuGet 包使用。
GitHub 仓库
此包未被任何流行 GitHub 仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
1.0.416 | 95 | 6/28/2024 |
1.0.406 | 102 | 6/14/2024 |
1.0.396 | 86 | 5/29/2024 |
1.0.384 | 80 | 5/15/2024 |
1.0.306 | 159 | 1/11/2024 |
1.0.272 | 166 | 11/10/2023 |
1.0.165 | 146 | 5/26/2023 |
1.0.149 | 120 | 5/12/2023 |
1.0.144 | 129 | 5/11/2023 |
1.0.140 | 128 | 5/10/2023 |
1.0.133 | 123 | 5/3/2023 |
1.0.48 | 290 | 1/5/2023 |
1.0.39 | 271 | 12/28/2022 |
1.0.3 | 336 | 11/17/2022 |
1.0.1 | 304 | 11/16/2022 |