【arduino】【u8g2库】OLED屏-U8glib库 增强版 U8G2库
转载请注明: 冬菇不败 及出处 :http://www.arduino.cn/thread-41193-1-1.html
以下的函数描述是源自原文: https://github.com/olikraus/u8g2/wiki/u8g2reference#begin
自己再通过测试后才发布,采用一个更新方式(精力有限,学习为主),客官觉得不错,就打赏一下呗~
U8G2是U8GLIB的增强版,相对旧版更加好用,强大,兼容板子多。U8G2有两种模式:U8g2是增强版模式,U8X8是简便模式省内存,在setup()里必须设定模式.
函数开始前,先讲一个东西。arduino 和OLED连接的方法(示例NANO和128X64 API OLED)
颜色对颜色线连接。
nano的板子上的D4567脚可以修改。不修改也行。
SCL=S&COLCK //时钟 SDA=S&DATA //数据 RES/RST = Reset //复位 D/C = DC
API连接这4条交互线就行了,和另外供电。 那么在代码中一开始必须定义好脚: (D3号脚可以不接)
U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2 (U8G2_R0, /* clock=*/ 4, /* data=*/ 5, /* cs=*/ 3, /* dc=*/ 6, /* reset=*/ 7); //这个定义脚代码细心看就懂了。
//U8G2支持的OLED控制芯片: https://github.com/olikraus/u8g2/wiki/gallery
//不同芯片的不同脚定义代码: https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
例子:
- #include <Arduino.h>
- #include <SPI.h>
- #include <U8g2lib.h>
- U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 4, /* data=*/ 5, /* cs=*/ 3, /* dc=*/ 6, /* reset=*/ 7);
- void setup(void) {
- u8g2.begin(); //选择U8G2模式,或者U8X8模式
- }
- void loop(void) {
- u8g2.firstPage();
- do {
- u8g2.setFont(u8g2_font_ncenB14_tr);
- u8g2.drawStr(0,15,"Hello World!");
- } while ( u8g2.nextPage() );
- delay(1000);
- }
复制代码
U8G2_R0 是一个参数: 指定大局显示的基本布局:
布局 | 描述 |
U8G2_R0 | 正常显示 |
U8G2_R1 | 90度顺时针旋转 |
U8G2_R2 | 180度顺时针旋转 |
U8G2_R3 | 270度顺时针旋转 |
U8G2_MIRROR | 正常显示镜像内容(v2.6.x版本以上使用) 注意:U8G2_MIRROR需要与setFlipMode()配搭使用. |
------------------------------------------------- 屏幕基本函数 -------------------------------------------
u8g2.begin( ) //开始构造U8G2, 在setup()内使用。 特别说明: 初始化在 Arduino的环境。 配置OLED的显示模式initDiplay或者省电模式setPowerSave,或者重置(清屏)clearDisplay 。同时检测六个按钮程序(比如前进、后退、确认、上一级...)。如果没有,可以在里定义按钮事件的引脚,用GetMenuEvent函数来定义,来进入到用户想要的界面,详情就看 userInterfaceMessage 和 GetMenuEvent 函数。无返回值。
关联使用函数:initDispaly 、setPowersave、clearDisplay、
u8g2.clear() // 清除缓冲区"Buffer"内的所有像素点
关联使用函数:print、home、clearBuffer
u8g2.clearBuffer() //清除内存中的所有缓冲区内的像素,而后可以用sendBuffer函数来把缓冲区“Buffer”在屏幕上显示出来,以便清屏。因这个过程是在微处理器中RAM里的副本"Buffer"中进行,标志“F”,所以 sendBuffer也就是直接操作副本“Buffer”。
关联使用函数:sendBuffer 例子:
- void loop(void) {
- u8g2.clearBuffer(); //清除当前Buffer内的像素
- // 在Buffer内一些操作
- u8g2.sendBuffer(); //发送Buffer内容到屏上
- delay(1000);
复制代码
u8g2.clearDisplay() //清除显示中所有像素。此过程在begin()中调用。在程序中一般用不上,也是通过sendBuffer和clearBuffer函数显示出来,一样的处理方式。
关联使用函数:begin
u8g2.disableUTF8Print() //禁用 UTF8字集 (万国语字库),默认是开启的。 关联使用函数:print 、enableUTF8Print
u8g2.enableUTF8Print () //启用 UTF8字集,许可UniCode向print发送字符串。这个函数通常在begin()后调用。
关联使用函数:print、disableUTF8Print
例子:
- void setup(void) {
- u8g2.begin();
- u8g2.enableUTF8Print(); // 使print支持UTF8字集
- }
复制代码
u8g2.Print() //在入当前光标位置用当前设置的字体,来打印出(内容)。光标位置可以用setCursor函数 。字体可以用setFont函数。
关联使用函数:print(U8x8)、enableUTF8Print、setFont、setCursor、
例子:
- u8g2.setFont(u8g2_font_ncenB14_tr); //设置字体
- u8g2.setCursor(0, 15); //设置光标处
- u8g2.print("Hello World!"); //输出内容
复制代码
U8x8: 一个自带字库,详情见setFont函数
------------------------------------------------- 绘图显示函数 -------------------------------------------
u8g2. drawBitMap() //在指定的x / y位置(位图左上角)绘制位图.。位图的部分可能位于显示边界之外。位图由数组位图指定。清除位意味着:不绘制像素。数组内的一个置位意味着:用当前颜色索引写像素。对于单色显示器,颜色索引0通常会清除一个像素,并且颜色索引1将设置一个像素。 因为复杂耗内存,此函数在U8G2中被停用! 格式:u8g2.drawBitMap (x,y,cnt,h)
参数: x是水平线位置
y是垂直线位置
cnt是点阵图字节数,宽是1字节*8(这个字节数必须控制好,否则点阵图会出现扭曲)
h是点阵图高度
u8g2.drawBox() //画个实心方形
格式:u8g2.drawBitMap (x,y,w,h)
参数: x是水平线起始位置
y是垂直线 起始 位置
w是方形的宽
h是 方形的 高
例子:
- #include <Arduino.h>
- #include <SPI.h>
- #include <U8g2lib.h>
- U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 4, /* data=*/ 5, /* cs=*/ 3, /* dc=*/ 6, /* reset=*/ 7);
- void setup(void) {
- u8g2.begin();
- }
- void loop(void) {
- u8g2.firstPage();
- do {
- u8g2.drawBox(48,20,25,15); //(起始X,起始Y,方形的宽W,方形的高H)
- } while ( u8g2.nextPage() );
- delay(1000);
- }
复制代码
u8g2.drawCircle() //画个空心圆,可选四个方向的半圆
类似与关联函数:drawDisc 、setDrawColor格式:u8g2.drawCircle(x, y ,rad,opt); // X,YS是绘图起始位置(圆的中心点),rad是圆的四分之一弧度。 opt是选项:
例子:
- void loop(void) {
- u8g2.firstPage();
- do {
- u8g2.drawCircle(48, 30, 10, U8G2_DRAW_LOWER_LEFT);
- } while ( u8g2.nextPage() );
- delay(1000);
- }
复制代码
u8g2.drawDisc() //画个实心圆,使用法跟drawCircle 一个饼样。多普达手机不好使,图片将就看。
U8G2.drawEllipse() //画一个空心椭圆形,实际上,和画圆是非常相似的用法。格式:u8g2.drawEllipse(X,Y, RX, RY, OPT);
u8g2.drawFilledEllipse() //画一个实心椭圆形,与u8g2.drawEllipse用法也是一个饼样
u8g2.DrawFrame //画一个空心方框格式:
u8g2.drawFrame(X,Y,W,H); // X,Y是方框的左上角坐标,W,H是宽和高,注意,如果方框比屏大,则多出部分不绘画,也就是说不耗内存和出现错图。
例子:
void loop(void) {
u8g2.firstPage();
do {
u8g2.drawFrame(48,30,25,15);
} while ( u8g2.nextPage() );
delay(1000);
}
u8g.drawLine() //画一条平面直线
格式:u8g.drawLine(x0, y0, x1, y1); //x0,y0是直线起始位置, x1,y1是直线终止位置。例子:
u8g.drawLine(20, 5, 5, 32);
drawPixel() //画一个点,一个点的像素。
格式:drawPixel(x,y) //x,y是画点的位置。(宽,高)
u8g2.drawRFrame() //画一个圆角空心方形
u8g2.drawRBox() //画一个圆角实心方形
特别说明:关于这两个代码,综合一下U8G2里面关于画四边形的函数:drawBox(实心),drawFrame(空心)这两个是直角四边形。然而 drawRBox(实心),drawRFrame(空心) 这两个带R的是圆角四边形的。Box是实心,Frame是空心,带R的都是圆角。
参数:两个函数的参数排放一样: (X起始位,Y 起始位 ,W宽度,H高度,R圆角的半径(至少R<XY))
例子:
- void loop() {
- u8g2.firstPage();
- do {
- u8g2.drawRFrame(20,17,30,22,7);
- u8g2.drawRBox(80,25,20,25,5);
- } while( u8g2.nextPage());
- }
复制代码
ps:任何一个形状如果XY初始位置放不好(至少没有位置能全部绘制出W*H),就会出现一下图。多出的图形不会绘制,也就是说不会浪费内存。
u8g2.drawStr() //绘制字符串,可以想象字符串是一串符号,它能输出什么“字符串”在屏上。取决于它的setFont被设置的字体集。
说明:一般都配搭着setFont函数使用,当然,如果不需要其它的字体集,在一开始begin()后设置,全局。字体集详情看setFont函数。一下是三个实例图。
格式:u8g2.drawStr(X, Y, S ); //S记得加“”。
特别注意,它的初始点XY是在左下角:
u8g.drawTriangle() //绘制实体三角形
格式:u8g.drawTriangle(X0,Y0, X1,Y1, X2,Y2);
【arduino】【u8g2库】OLED屏-U8glib库 增强版 U8G2库相关推荐
- olcd12864的u8g2库_【原创】OLED屏-U8glib库 增强版 U8G2库。
本帖最后由 alientg 于 2017-1-10 17:01 编辑 https://github.com/olikraus/u8g2/wiki/u8g2reference#begin 自己再通过测试 ...
- Facebook 开源增强版 LASER 库:可实现 93 种语言的零样本迁移...
雷锋网 AI 科技评论按:去年 12 月份,Facebook 在论文中提出了一种可学习 93 种语言的联合多语言句子表示的架构,该架构仅使用一个编码器,就可以在不做任何修改的情况下实现跨语言迁移,为自 ...
- Facebook 开源增强版 LASER 库:可实现 93 种语言的零样本迁移
雷锋网 AI 科技评论按:去年 12 月份,Facebook 在论文中提出了一种可学习 93 种语言的联合多语言句子表示的架构,该架构仅使用一个编码器,就可以在不做任何修改的情况下实现跨语言迁移,为自 ...
- [arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)
[arduino][u8g2][12864] oled-u8g2库使用说明(例子是12864液晶屏) 首先说一下写这个文档的目的,一是给自己做个笔记来以备后边使,二是写个文档给大家看,我从网上找了很多 ...
- esp32使用MicroPython驱动oled屏显示中文和英文
文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...
- Facebook 开源增强版 LASER,可使用90多种语言
为了加速将自然语言处理(NLP)应用到更多的语言,Facebook 开源了增强版 LASER 库,成为第一个成功地与 NLP 社区分享的大型多语种句子表示工具.该工具目前可以使用90多种语言,涉及28 ...
- arduino使用oled代码_Arduino提高篇04—U8g2库驱动OLED
OLED显示屏的驱动库非常多,本篇介绍强大的U8g2库,通过使用U8g2库来驱动OLED屏. 1. U8g2库介绍 U8g2库是嵌入式设备单色图形库,支持非常多的嵌入式设备平台,如单片机,STM32, ...
- arduino上ESP8266用Adafruit_SSD1306库驱动OLED屏
关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 在进行后续的ESP8266学习前,我们先来对OLED屏进行驱动,为后续学习提供直观的信息显示. 1. 安装驱动库 在之前 ...
- Arduino教程四——u8g2库OLED屏幕显示
1) 功能 u8g2库OLED屏幕显示英文 OLED 0.96寸 128X64 对于这几个参数进行说明, 0.96指的是屏幕的显示尺寸0.96inch, 128×64指的是屏幕的分辨率为128× ...
最新文章
- nohup 和后台运行符号
- 浅析Java.lang.ProcessBuilder类
- cfb为什么不需要填充_为什么很多高中生数学成绩不理想,需要补课?因为不熟练啊!...
- LeetCode Valid Sudoku
- vue伸缩效果_Vue.js - 元素展开、收起动画效果组件(附:二级菜单的展开、收缩动画效果)...
- 小米四曲面瀑布屏概念手机亮相:按键、开孔、边框全部消失
- AB实验的高端玩法系列4- 实验渗透低?用户未被触达?CACE/LATE
- gitlab CI/CD 持续集成 部署 一文到底
- 估值择时对ETF基金定投的影响
- ​​​​​​​​​​​勾股数的规律
- 2086689-01-0,N-(Azido-PEG2)-N-Boc-PEG3-acid末端羧酸可在活化剂(例如EDC或HATU)存在下与伯氨基反应
- 使用NuSMV解决过河问题
- UNETR 医学图像分割架构 2D版 (Tensorflow2 Keras 实现UNETR)
- 2022危险化学品生产单位安全生产管理人员考试题库及模拟考试
- 2012意大利之行3:罗马的路和车
- win7通过远程桌面连接win10失败解决方法
- [CSP-S模拟测试]:壕游戏(费用流)
- git Please tell me who you are怎么处理解决
- mysql intersect用法格式_MySQL中使用INNER JOIN来实现Intersect并集操作
- Python获取阿里云产品云监控数据指标
热门文章
- 金融day04 —— 银行总的会计核算
- 【飞思卡尔 MC9S12】BootLoader 上位机
- java设置新生代大小,jvm java虚拟机 新生代的配置
- sql函数-创建计算工作日函数,除去了周末以及法定节假日,需要新建表做维护(内置本人有道云链接)
- 2021-2027全球与中国无纸温度记录仪市场现状及未来发展趋势
- 计算机专业导论的作用,计算机专业导论第00讲-计算机绪论.pdf
- 插值字符串格式化定制程序结果输出(f‘{object}‘)
- Oracle中的DDL,DML,DCL总结
- A里P7推荐68道Redis面试题,全是干货,20年面试必备
- 使用mysql官网下载linux版本