这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持数字示波器】+2.6寸墨水屏调试经验

共6条 1/1 1 跳转至

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

工程师
2024-03-20 19:36:04   被打赏 50 分(兑奖)     打赏

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

  1. 四色墨水屏

    • 尺寸:2.66英寸。

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

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

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

  2. 墨水屏驱动板

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

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

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

显示效果:

image.png

点亮的代码:

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

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

image.png

代码解释:

上面的代码是使用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的板上。

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 <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中,墨水屏刚上电时会闪烁一下。

开发准备与开发流程:

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

image.png

显示效果:


专家
2024-03-23 09:48:14     打赏
2楼

谢谢分享


高工
2024-03-24 09:10:04     打赏
3楼

谢谢分享


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

谢谢分享


专家
2024-03-24 15:50:22     打赏
5楼

谢谢分享


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

学习了,谢谢分享。


共6条 1/1 1 跳转至

回复

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