U8g2库的使用
一.硬件介绍:
由于笔者这里只有0.96寸的OLED屏幕,那就讲讲最常用的0.96寸OLED屏幕吧。
OLED介绍:
OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示 OLED 效果要来得好一些。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。在此我们使用的是0.96寸OLED显示屏,该屏有以下特点:
- 0.96寸OLED 有黄蓝,白,蓝三种颜色可选;其中黄蓝是屏上 1/4 部分为黄光,下 3/4 为蓝;而且是固定区域显示固定颜色,颜色和显示区域均不能修改;白光则为纯白,也就是黑底白字;蓝色则为纯蓝,也就是黑底蓝字。
- 分辨率为 128*64
- 多种接口方式;OLED 裸屏总共种接口包括:6800、8080 两种并行接口方式、3 线或 4 线的串行 SPI 接口方式、 IIC 接口方式(只需要 2 根线就可以控制OLED了!),这五种接口是通过屏上的BS0~BS2来配置的。
- 开发了两种接口的 Demo 板,接口分别为七针的 SPI/IIC 兼容模块,四针的IIC 模块。两种模块都很方便使用;希望大家根据实际需求来选择不同的模块。
图为笔者用OLED屏幕做的一个温湿度和光照强度显示后面为LCD1602屏幕
0.96寸OLED屏幕介绍:
- 工作电压:3V~5.5V
- I2C介面 (位址:0x30)
- 驱动IC:SSD1306
- OLED屏幕分为单色和双色两种
- GND 电源地
- VCC 电源正(3~5.5V)
- SCL OLED 的 D0 脚,在 IIC 通信中为时钟管脚
- SDA OLED 的 D1 脚,在 IIC 通信中为数据管
和电脑显示器一样,OLED屏幕左上角是坐标原点(0.0),水平轴坐标向右增大,垂直向下增大。
二.程序介绍:
1.U8g2库的下载:
2.U8g2库函数:
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,U8X8_PIN_NONE);
U8G2//程序库_SSD1306//控制晶片_128X64_NONAME//解析度和型号_F//暂存区大小可以改为1,2,F _HW_I2C//控制介面 u8g2(U8G2_R0// 代表不旋转,U8X8_PIN_NONE//代表没有重置引脚);
begin()//初始化
clear()//清除暂存记忆体
sendBuffer()//发送暂存记忆体内容给显示器,和上个指令搭配使用
enableUTF8Print()//启用enableUTF8Print(如:中文)的字串
setFont()//设定字体
drawStr(x,y,"字串")//在坐标(x,y)显示英文字体 注意:该函数不支持显示自制中文字
drawUTF8(x,y,"字串")//使用前必须先设定显示字体
setCursor(x,y)//把游标设定在坐标(x,y)
print("字串")//在游标位置显示字体(可以用该方法显示中文字体)
小补充:
- 关于字体传送门
- 在显示文字或者图片时,并不会立即呈现在屏幕上,因为这些操作都是先在记忆体中组合画面,从主记忆体中划分出给显示器暂存影像资料用的区域,统称为frame buffer (影像暂存区)或简称暂存区(buffer)。
- 连接介面可改用SW_I2C,代表用"software"(软体)模凝IIC介面,除非有特殊需要,否则请采用硬体PC介面;自定义如下:
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,19,20,U8X8_PIN_NONE);//19 SCL引脚 20 SDA引脚
3.U8g2库使用模板:
#include <Arduino.h>
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,U8X8_PIN_NONE);
void setup() {
u8g2.begin();//初始化
u8g2.setFont(u8g2_font_ncenB08_tr);//设定字体
}
void loop() {
u8g2.firstPage();
do {
u8g2.drawStr(0, 10, "Temperature");//在指定位置显示字符串
} while ( u8g2.nextPage() );
4.小应用:使用屏幕显示"hangzhou"
#include <Arduino.h>
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,U8X8_PIN_NONE);//实例化
void setup() {
u8g2.begin();//初始化
u8g2.setFont(u8g2_font_ncenB08_tr);//设定字体
}
void loop() {
u8g2.firstPage();
do {
u8g2.drawStr(0, 10, "hangzhou");//在指定位置显示字符串
} while ( u8g2.nextPage() );
}
5.效果显示:
注意笔者这里用的没有重置引脚因此UNO板直接SCL,SCL相连,SDA和SDA相连
另外笔者这里就不介绍怎么用U8g2库显示中文了网上有太多案例了传送门
U8g2库的使用的更多相关文章
- U8g2库I2C总线再次突破性调试成功
这次采用U8X8的方式,不再采用u8g2,因为后者一直报内存问题.所以采用了不占内存的u8x8模式 同时u8g2库文件的示例代码也是很牛逼的, 里面还有message box 非常的可爱运行效果也非常 ...
- u8g2库的相关资料
2017-12-1309:13:32更新51论坛上的帖子,大神自己写的库文件,待调试! http://www.51hei.com/bbs/forum.php?mod=viewthread&ti ...
- esp8266网络自动对时 串口字符连接 并显示 12864i2c u8g2库
给别人定做的 做的 集成了 烟雾传感器dht11u8g2网络 自动对时 #include <dht11.h>//程序中调用了dht11的库#include <Arduino.h> ...
- 玩转u8g2 OLED库,一篇就够
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 玩转u8g2 OLED库,一篇就够(分篇)
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 深入学习 OLED Adafruit_SSD1306库(8266+arduino)
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 SSD1306屏幕驱动库,最出名应该就是u8g2,读者可以参考 玩转u ...
- 用Arduino显示颜色序列(u8g2,OLED)
目录 用Arduino显示颜色序列(u8g2,OLED) 用Arduino显示颜色序列(u8g2,OLED) 提前祝大家新年快乐! 主控:Arduino Mega 2560 硬件:126×64 OLE ...
- U8g2图形库与STM32移植(I2C,软件与硬件)
U8g2图形库 简介 U8g2 是一个用于嵌入式设备的简易图形库,可以在多种 OLED 和 LCD 屏幕上,支持包括 SSD1306 等多种类型的底层驱动,并可以很方便地移植到 Arduino .树莓 ...
- I2C 连接 12864 OLED 屏幕
http://ardui.co/archives/738 我是潘,曾经是个工程师.这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程.上一课介绍了I2C 协议连接1602 L ...
随机推荐
- 编译PHP扩展的方式
编译的两种方式其实很简单,这里记录只是为了以后遇到这种情况时不加思索地运用上,而不是花费一些时间去回忆. C/C++程序编译有两种方式:动态编译.静态编译.PHP 是使用 C/C++程序开发的一门脚本 ...
- tomcat实现多虚拟主机
一.安装tomcat 请查看:二进制安装tomat 二.配置虚拟主机 2.1 修改server.xml # vim /usr/local/tomcat/conf/server.xml ...省略 #在 ...
- ajax请求egg用nginx转发跨域问题
火狐浏览器报的 谷歌浏览器报的 前提: npm i egg-cors --save config 文件下的pulgin.js 已经添加 //启用跨域支持 exports.cors = { enable ...
- visual studio自动向量化
//////////////////////////////////////////////////*SSE 和 AVX 每个都有16个寄存器SSE 有 XMM0 ~ XMM15,是128bitAVX ...
- Solution -「十二省联考2019」春节十二响
题目 题意简述 link. 给一棵 \(n\) 个结点的有根树,点带权.把点分为若干组,并要求同组内不存在任何祖先-后代关系.最小化每组内的最大点权之和. 数据规模 \(n\le2\tim ...
- Solution -「LOCAL」过河
\(\mathcal{Description}\) 一段坐标轴 \([0,L]\),从 \(0\) 出发,每次可以 \(+a\) 或 \(-b\),但不能越出 \([0,L]\).求可达的整点数. ...
- Solution -「CF 1370F2」The Hidden Pair (Hard Version)
\(\mathcal{Description}\) Link (hard) & Link (easy). 这是一道交互题. 给定一棵 \(n\) 个结点的树,其中有两个是特殊结点. ...
- Vue2.0源码学习(1) - 数据和模板的渲染(上)
准备 一.首先去GitHub上把vue源码download下来,传送门:https://github.com/vuejs/vue 二.搭建一个vue-cli跑起来,用于代码调试,不看着代码动起来只看源 ...
- 实体类分层命名PO,VO,BO,DTO,POJO,DAO,DO
一.Java中PO.DO.TO.DTO. VO. BO.POJO .DAO的概念 PO:persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录.好处是可以把一条记录 ...
- 用这个BI工具,不会代码的业务人员也能做数据分析!
随着企业的迅速发展,企业对数据分析的需求也在不断地凸显,但我们在实际的工作中经常会遇到这样尴尬的情形:擅长数据分析的人不懂业务,擅长业务的人又不了解数据分析.那么怎么让更懂业务逻辑.业务分析需求和痛点 ...