让屏幕动起来:使用.NET玩转NV3030B驱动

B站影视 欧美电影 2025-03-14 09:22 1

摘要:本文将深入探讨如何使用Sang.IoT.NV3030B来驱动 NV3030B 显示屏。并介绍如何使用这个库来控制显示屏,以及在不同设备的使用方法。在物联网设备中,显示屏是一个常见的输出设备。NV3030B 是一种常用的显示控制器,支持262K色显示,能清晰地展

本文将深入探讨如何使用Sang.IoT.NV3030B来驱动 NV3030B 显示屏。并介绍如何使用这个库来控制显示屏,以及在不同设备的使用方法。在物联网设备中,显示屏是一个常见的输出设备。NV3030B 是一种常用的显示控制器,支持262K色显示,能清晰地展示彩色图片,在智能家居控制面板、便携式设备等场景广泛应用。在本文中,我们将介绍如何使用库来控制 NV3030B 显示屏。对于 SPI 的接线和设备检查,这里我们不再赘述,可以参考前面的文章。安装库,可以使用以下命令:dotnet add package Sang.IoT.NV3030BPackage

安装完成后,我们可以开始编写代码来驱动LCD显示屏。

首先,我们需要引入相关的命名空间:

using Iot.Device.Graphics;using Iot.Device.Graphics.SkiaSharpAdapter;using Sang.IoT.NV3030B;using System.Device.gpio;using System.Device.Spi;

然后,设置 GPIO 引脚:

const int pinID_DC = 25;const int pinID_Reset = 27;const int pinID_BL = 18;

接着,注册 SkiaSharp 适配器。注意:这里千万不要忘记注册适配器,否则无法正常使用 SkiaSharp 绘图。

SkiaSharpAdapter.Register;

接下来,设置 SPI 创建显示设备:

SpiDevice displaySPI = SpiDevice.Create(new SpiConnectionSettings(0, 0){ Mode = SpiMode.Mode0, DataBitLength = 8, ClockFrequency = 40_000_000});using var display = new NV3030B(displaySPI, pinID_DC, pinID_Reset, pinID_BL);最后,我们可以使用display对象来控制显示屏。

基础的显示测试代码如下:

// 使用红色清空屏幕display.ClearScreen(System.Drawing.Color.Red, true);await Task.Delay(10000);// 使用蓝色和绿色填充两个矩形display.FillRect(System.Drawing.Color.Blue, 0, 0, 100, 100);display.FillRect(System.Drawing.Color.Green, 100, 0, 100, 100);display.SendFrame(false);

这段代码会在屏幕上显示一个红色背景,然后在屏幕上绘制两个矩形,一个蓝色,一个绿色。

基础图形

图片展示方法:

using var image = BitmapImage.CreateFromFile("LCD_1inch5.jpg");display.DrawBitmap(image);这里的调光是通过pinID_BL引脚来控制的,可以通过调整pinID_BL引脚的电压来调整显示屏的亮度。直接使用display.SetBacklight(100);来设置最大亮度。Console.WriteLine("Testing backlight...");display.SetBacklight(20);await Task.Delay(500);display.SetBacklight(50);display.SetBacklight(100);在 LuckFox 上使用时,需要先用luckfox-config开启 SPI 和 PWM,注意:需要先关闭 LCD 和 I2C4,否则会占用 SPI 引脚。PWM 是接给pinID_BL引脚的,可以自己选一个,示例中使用的是40然后在代码中使用SysFsDriverconst int pinID_DC = 32;const int pinID_Reset = 33;const int pinID_BL = 40;var gpioController = new GpioController(PinNumberingScheme.Logical, new SysFsDriver);using var display = new NV3030B(displaySPI, pinID_DC, pinID_Reset, pinID_BL, gpioController: gpioController);

这样就可以在 LuckFox 上使用 NV3030B 显示屏了。

luckfox通过使用库,我们可以方便地控制 NV3030B 显示屏。在实际项目中,我们可以根据需要,进一步扩展和优化显示功能,实现更加丰富的显示效果。

后续该库也会不断更新,提供更多功能和优化。同时会拆分基类,方便后续接入更多显示屏。

来源:opendotnet

相关推荐