下面先介绍一下我这个墨水屏。
四色墨水屏:
尺寸:2.66英寸。
类型:EPD(电子纸显示器),具有不消耗电力的静态显示特性。
颜色:SPECTRA B/W/R/Y,即能够显示黑白红黄四种颜色。
W.IT可能是制造商或品牌标识。
墨水屏驱动板:
型号或标识:EXT3 - EPD EXTENSION BOARD。
功能:用于驱动和控制墨水屏,包含必要的电路和元件。
与微处理器或微控制器通信,控制墨水屏显示内容。
显示效果:

点亮的代码:
#include <Arduino.h>
#include "PDLS_EXT3_Basic_BWRY.h"
//#include "hV_HAL_Peripherals.h"
//#include "hV_Configuration.h"
Screen_EPD_EXT3 myScreen(eScreen_EPD_EXT3_266_BWRY, boardRaspberryPiPico_RP2040);
void displayPaletteBWRY()
{
uint16_t y = 20;
myScreen.setOrientation(ORIENTATION_LANDSCAPE);
myScreen.selectFont(Font_Terminal16x24);
myScreen.gText(30, y, "DJ Hell World!", myColours.yellow);
y += myScreen.characterSizeY()+20;
myScreen.selectFont(Font_Terminal12x16);
myScreen.gText(30, y, "EEWORLD Follow me 4.", myColours.red);
y += myScreen.characterSizeY()+12;
y += myScreen.characterSizeY();
myScreen.selectFont(Font_Terminal12x16);
myScreen.gText(30, y, "EEWORLD,DigiKey!");
y += myScreen.characterSizeY();
myScreen.flush();
}
void setup()
{
Serial.begin(115200);
delay(500);
pinMode(LED_BUILTIN, OUTPUT);
myScreen.begin();
Serial.println("DISPLAY_PALETTE_BWRY... ");
myScreen.clear();
displayPaletteBWRY();
}
void loop()
{
//digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
//delay(1000); // wait for a second
// digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
// delay(1000); // wait for a second
}开发平台是Arduino.
请看下图的端口与使用的开发板。

代码解释:
上面的代码是使用Arduino编写的,它利用了一个名为PDLS_EXT3_Basic_BWRY的库来控制一个四色(黑、白、红、黄)的电子墨水屏(EPD)。
以下是对代码的详细解释:
包含头文件#include <Arduino.h> #include "PDLS_EXT3_Basic_BWRY.h"
<Arduino.h>:Arduino的核心库,为Arduino编程提供基础功能和API。
"PDLS_EXT3_Basic_BWRY.h":一个自定义库,可能包含与四色墨水屏通信和控制所需的函数和类。
Screen_EPD_EXT3 myScreen(eScreen_EPD_EXT3_266_BWRY, boardRaspberryPiPico_RP2040);
这里定义了一个Screen_EPD_EXT3类型的对象myScreen,用于与四色墨水屏通信。
eScreen_EPD_EXT3_266_BWRY:表示墨水屏的型号或配置,2.66英寸,支持黑、白、红、黄四色。
boardRaspberryPiPico_RP2040:可能表示该屏幕连接到一个基于Raspberry Pi Pico RP2040的板上。
void displayPaletteBWRY() {// ... (函数内容) }这个函数用于在墨水屏上显示文本,使用不同的颜色和字体。
使用了myScreen对象的setOrientation、selectFont、gText和flush等方法来设置屏幕方向、选择字体、绘制文本和刷新屏幕。
void setup() {// ... (函数内容) }这是Arduino程序的初始化部分,只在程序启动时执行一次。
在这里,它初始化了串行通信、等待500毫秒、设置了内置LED为输出模式、初始化了墨水屏,并调用了displayPaletteBWRY函数来显示文本。
void loop() {// ... (被注释掉的代码) }这是Arduino程序的主循环,程序启动后会一直在这里循环执行。
当前的loop函数是空的,因为其中的代码都被注释掉了。如果取消注释,它会让内置LED闪烁。
代码中注释掉了两个头文件hV_HAL_Peripherals.h和hV_Configuration.h,这可能意味着这些头文件不是必需的,或者代码是一个示例,并没有使用到这两个头文件中的功能。
myColours.yellow和myColours.red这样的颜色引用似乎是在其他地方定义的,可能是在PDLS_EXT3_Basic_BWRY库中,或者是在这段代码之外。
为了让论坛的友友们更加清楚的看明白,我这里还是贴一个我注释好的代码上来。
// 包含Arduino的核心库
#include <Arduino.h>
// 包含控制四色墨水屏的库
#include "PDLS_EXT3_Basic_BWRY.h"
// 声明一个屏幕对象,用于控制四色墨水屏
Screen_EPD_EXT3 myScreen(eScreen_EPD_EXT3_266_BWRY, boardRaspberryPiPico_RP2040);
// 显示四色文本的函数
void displayPaletteBWRY()
{
uint16_t y = 20; // 定义初始的y坐标位置
myScreen.setOrientation(ORIENTATION_LANDSCAPE); // 设置屏幕为横屏模式
myScreen.selectFont(Font_Terminal16x24); // 选择字体为16x24大小
// 在屏幕上绘制黄色文本
myScreen.gText(30, y, "DJ Hell World!", myColours.yellow);
y += myScreen.characterSizeY()+20; // 更新y坐标位置,加上当前字体的高度和额外的间距
myScreen.selectFont(Font_Terminal12x16); // 选择字体为12x16大小
// 在屏幕上绘制红色文本
myScreen.gText(30, y, "EEWORLD Follow me 4.", myColours.red);
y += myScreen.characterSizeY()+12; // 更新y坐标位置
y += myScreen.characterSizeY(); // 再增加一行字符的高度,作为间距
// 继续绘制12x16大小的文本
myScreen.selectFont(Font_Terminal12x16);
myScreen.gText(30, y, "EEWORLD,DigiKey!");
y += myScreen.characterSizeY(); // 更新y坐标位置
myScreen.flush(); // 刷新屏幕,确保所有文本都显示出来
}
// Arduino的初始化函数
void setup()
{
Serial.begin(115200); // 初始化串行通信,设置波特率为115200
delay(500); // 等待500毫秒
pinMode(LED_BUILTIN, OUTPUT); // 设置内置LED为输出模式
myScreen.begin(); // 初始化墨水屏
Serial.println("DISPLAY_PALETTE_BWRY... "); // 通过串行端口输出信息
myScreen.clear(); // 清除墨水屏上的内容
displayPaletteBWRY(); // 调用函数显示文本
}
// Arduino的主循环函数
void loop()
{
// 以下四行代码被注释掉了,如果取消注释,它们会使内置LED闪烁
//digitalWrite(LED_BUILTIN, HIGH); // 打开LED灯
//delay(1000); // 等待一秒
//digitalWrite(LED_BUILTIN, LOW); // 关闭LED灯
//delay(1000); // 再等待一秒
}方便大家学习,当然这段代码在墨水屏上显示还是有一定的问题,也需要完善其功能,这里我还是讲一下,我当初的调试过程,写好这段代码后,刷入到RP2040中,墨水屏刚上电时会闪烁一下。
开发准备与开发流程:
主板与墨水屏驱动板连接图:

显示效果:

我要赚赏金
