论坛» 活动中心» 板卡试用

【换取手持数字示波器】+2.6寸墨水屏调试经验

助工
2024-03-20 19:36 1楼

下面先介绍一下我这个墨水屏。

  1. 四色墨水屏

    • 尺寸:2.66英寸。

    • 类型:EPD(电子纸显示器),具有不消耗电力的静态显示特性。

    • 颜色:SPECTRA B/W/R/Y,即能够显示黑白红黄四种颜色。

    • W.IT可能是制造商或品牌标识。

  2. 墨水屏驱动板

    • 型号或标识:EXT3 - EPD EXTENSION BOARD。

    • 功能:用于驱动和控制墨水屏,包含必要的电路和元件。

    • 与微处理器或微控制器通信,控制墨水屏显示内容。

显示效果:

image.png

点亮的代码:

#include  #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.

请看下图的端口与使用的开发板。

image.png

代码解释:

上面的代码是使用Arduino编写的,它利用了一个名为PDLS_EXT3_Basic_BWRY的库来控制一个四色(黑、白、红、黄)的电子墨水屏(EPD)。

以下是对代码的详细解释:

包含头文件
#include  #include "PDLS_EXT3_Basic_BWRY.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的板上。

displayPaletteBWRY函数
void displayPaletteBWRY() {// ... (函数内容) }
  • 这个函数用于在墨水屏上显示文本,使用不同的颜色和字体。

  • 使用了myScreen对象的setOrientation、selectFont、gText和flush等方法来设置屏幕方向、选择字体、绘制文本和刷新屏幕。

setup函数
void setup() {// ... (函数内容) }
  • 这是Arduino程序的初始化部分,只在程序启动时执行一次。

  • 在这里,它初始化了串行通信、等待500毫秒、设置了内置LED为输出模式、初始化了墨水屏,并调用了displayPaletteBWRY函数来显示文本。

loop函数
void loop() {// ... (被注释掉的代码) }
  • 这是Arduino程序的主循环,程序启动后会一直在这里循环执行。

  • 当前的loop函数是空的,因为其中的代码都被注释掉了。如果取消注释,它会让内置LED闪烁。

注意事项
  • 代码中注释掉了两个头文件hV_HAL_Peripherals.h和hV_Configuration.h,这可能意味着这些头文件不是必需的,或者代码是一个示例,并没有使用到这两个头文件中的功能。

  • myColours.yellow和myColours.red这样的颜色引用似乎是在其他地方定义的,可能是在PDLS_EXT3_Basic_BWRY库中,或者是在这段代码之外。

为了让论坛的友友们更加清楚的看明白,我这里还是贴一个我注释好的代码上来。

// 包含Arduino的核心库 #include  // 包含控制四色墨水屏的库 #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中,墨水屏刚上电时会闪烁一下。

开发准备与开发流程:

image.png主板与墨水屏驱动板连接图:

image.png

显示效果:

专家
2024-03-23 09:48 2楼

谢谢分享

高工
2024-03-24 09:10 3楼

谢谢分享

高工
2024-03-24 09:18 4楼

谢谢分享

专家
2024-03-24 15:50 5楼

谢谢分享

工程师
2024-03-25 09:46 6楼

学习了,谢谢分享。

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]