下面先介绍一下我这个墨水屏。
四色墨水屏:
尺寸: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中,墨水屏刚上电时会闪烁一下。
开发准备与开发流程:
主板与墨水屏驱动板连接图:
显示效果: