多功能OLED屏幕开发样例

249 篇文章 6 订阅
213 篇文章 2 订阅

样例简介

此样例演示如何在Pegasus Wi-Fi IoT智能家居套件上使用SSD 1306库驱动OLED屏。

工程版本
  • 系统版本/API版本:OpenHarmony 3.0 release
  • IDE版本:DevEco Device Tool Release 3.0.0.401

快速上手

准备硬件环境
  • 预装windows系统的PC机
  • Hi3861V100开发板套件
准备工程

本用例采DevEco Device Tool工具进行开发,当配置完开发环境后,我们可以在IDE上进行工程的配置下载。

  • 打开DevEco Device Tool,连接远程linux服务器:DevEco Device Tool 环境搭建

  • 点击左下角DevEco插件图标,然后点击左边框出现的主页,弹出主页界面,主页中选择新建项目,如下图:

  • 配置下载工程

如上图所示,填写对应样例工程的名称,选择对应的样例组件和样例工程存放路径后,点击创建即可进行样例工程的下载。下载界面如下:

当左下角显示正在下载OpenHarmony镜像时,耐心等待下载完成即可。

准备工具链
  • 在Projects中,点击Settings按钮,进入配置工程界面。

  • 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击SetUp按钮,自动安装所需工具链。

  • 如果出现安装pip组件失败,可参考修改Python源的方法 进行修改,完成尝试重新安装。

工具链自动安装完成后如下图所示。

样例代码下载完成后,DevEco Device Tool会重新要求连接远程服务器,输入密码连接后会进入对应的代码编辑界面,此时点击左下角DevEco插件图标,选择PROJECT TASKS可以查看到对应的样例工程,点击build选项进行编译,并可在终端查看对应的编译结果。

固件生成在对应工程目录的out/hispark_pegasus/wifiiot_hispark_pegasus/目录下。

烧录/安装

编译完成后可以通过DevEco Device Tool进行烧录,在烧录前需要做一些烧录的配置:

配置准备

在配置烧录前需要先查看DevEco Device Tool是否可以正常识别串口。

  • 点击左边栏"REMOTE DEVELOPMENT",找到 并点击” Local PC “ 选项。

  • 查看 Local PC右边图标

    如若图标为

    ,则代表DevEco Device Tool已连接本地,可以正常识别串口。

,则代表DevEco Device Tool未连接本地,不能识别串口,此时需要点击该绿色图标进行连接,连接成功后图标会变为

  • 点击主页,在主页选择对应工程,点击配置工程进入到配置页面。
查询串口

在DevEco Device Tool中,点击QUICK ACCESS > DevEco Home > Device,查看并记录对应的串口号。

如果对应的串口异常,请根据 Hi3861V100开发板串口驱动安装 安装USB转串口的驱动程序。

配置串口

在QUICK ACCESS > DevEco Home > Projects中,点击Settings打开工程配置界面。

在“hi3861”页签,设置烧录选项,包括upload_port、upload_protocol和upload_partitions。

  • upload_port:选择已查询的串口号。
  • upload_protocol:选择烧录协议,选择“hiburn-serial”。
  • upload_partitions:选择待烧录的文件,默认选择hi3861_app。

烧录
  • 所有的配置都修改完成后,在工程配置页签的顶部,点击Save进行保存。点击Open打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的Upload按钮,启动烧录。

  • 启动烧录后,显示如下提示信息时,请在15秒内,按下开发板上的RST按钮重启开发板。

  • 重新上电后,界面提示如下信息时,表示烧录成功。

更多烧录细节可以参考 Hi3861V100开发板烧录

  • 效果演示
  1. 播放gif:

*   使用本项目中的转换脚本将gif每一帧画面提取出来,转成bitmap数组,程序里循环播放
  1. 播放视频:

*   C/S架构,开发板作为客户端,PC作为服务端,使用TCP传输每帧画面(因为视频帧数较多,开发板闪存放不下)
*   播放项目源码: [https://gitee.com/hihopeorg/harmonyos_oled_player](https://gitee.com/hihopeorg/harmonyos_oled_player)

I2C API

API名称说明
IoTI2cInit(unsigned int id, unsigned int baudrate);用指定的波特速率初始化I2C设备
IoTI2cDeinit(unsigned int id);取消初始化I2C设备
IoTI2cWrite(unsigned int id, unsigned short deviceAddr, const unsigned char *data, unsigned int dataLen);将数据写入I2C设备
IoTI2cRead(unsigned int id, unsigned short deviceAddr, unsigned char *data, unsigned int dataLen);从I2C设备中读取数据
IoTI2cSetBaudrate(unsigned int id, unsigned int baudrate);设置I2C设备的波特率

ssd1306 API

本样例提供了一个HarmonyOS IoT硬件接口的SSD1306 OLED屏驱动库,其功能如下:

  • 内置了128*64 bit的内存缓冲区,支持全屏刷新;

  • 优化了屏幕刷新速率,实测最大帧率10fps;

  • libm_port是从musl libc中抽取的sincos的实现;

    • 用于规避链接Hi3861 SDK中的libm_flash.a报错的问题;
  • gif2imgs.py 可用于将gif动图中的帧分离出来;

    • 依赖 pillow 包,可以使用 pip install pillow 命令安装;
  • img2code.py 可用于将图片转为C数组,每个字节表示8个像素;

    • 依赖 opecv-python 包,可以使用 pip install opencv-python 命令安装;
  • 使用Harmony OS的IoT硬件接口;

  • 接口简洁易于使用、易于移植;

  • 内置了测试程序,可直接进行测试;

    API名称说明
    void ssd1306_Init(void)初始化
    void ssd1306_Fill(SSD1306_COLOR color)以指定的颜色填充屏幕
    void ssd1306_SetCursor(uint8_t x, uint8_t y)定位光标
    void ssd1306_UpdateScreen(void)更新屏幕内容
    char ssd1306_DrawChar(char ch, FontDef Font, SSD1306_COLOR color)在屏幕缓冲区绘制1个字符
    char ssd1306_DrawString(char* str, FontDef Font, SSD1306_COLOR color)将完整字符串写入屏幕缓冲区
    void ssd1306_DrawPixel(uint8_t x, uint8_t y, SSD1306_COLOR color)在屏幕缓冲区中绘制一个像素
    void ssd1306_DrawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color)用Bresenhem算法画直线
    void ssd1306_DrawPolyline(const SSD1306_VERTEX *par_vertex, uint16_t par_size, SSD1306_COLOR color)绘制多段线
    void ssd1306_DrawRectangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color)绘制矩形
    void ssd1306_DrawArc(uint8_t x, uint8_t y, uint8_t radius, uint16_t start_angle, uint16_t sweep, SSD1306_COLOR color)绘图角度
    void ssd1306_DrawCircle(uint8_t par_x, uint8_t par_y, uint8_t par_r, SSD1306_COLOR color)用Bresenhem算法画圆
    void ssd1306_DrawBitmap(const uint8_t* bitmap, uint32_t size)绘图位图
    void ssd1306_DrawRegion(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t* data, uint32_t size, uint32_t stride)

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:https://qr21.cn/FV7h05

入门必看:https://qr21.cn/FV7h05
1.  应用开发导读(ArkTS)
2.  ……

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门:https://qr21.cn/FV7h05
1.  基本概念
2.  构建第一个ArkTS应用
3.  构建第一个JS应用
4.  ……

开发基础知识:https://qr21.cn/FV7h05
1.  应用基础知识
2.  配置文件
3.  应用数据管理
4.  应用安全管理
5.  应用隐私保护
6.  三方应用调用管控机制
7.  资源分类与访问
8.  学习ArkTS语言
9.  ……

基于ArkTS 开发:https://qr21.cn/FV7h05
1.  Ability开发
2.  UI开发
3.  公共事件与通知
4.  窗口管理
5.  媒体
6.  安全
7.  网络与链接
8.  电话服务
9.  数据管理
10.  后台任务(Background Task)管理
11.  设备管理
12.  设备使用信息统计
13.  DFX
14.  国际化开发
15.  折叠屏系列
16.  ……

鸿蒙开发面试真题(含参考答案):https://qr21.cn/FV7h05

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值