Arduino Uno 驱动OLED进阶 显示中英文字
之前已经学会如何接线,实现示例显示
这次就开始一些实际的应用
本示例还是使用IIC的接线方法,请参照第一篇
Arduino 驱动OLED屏幕IIC接线方式简单入门
实现文字的显示
这代码上实现在指定的坐标显示指定的中英文字
先看看效果图
相关开源代码:
程序与库与软件打包下载:https://u16460183.ctfile.com/fs/16460183-296052219
文件夹说明:
Adafruit_SSD1306-master ——SSD1306库(OLED的主要库文件,库请复制在Arduino的库目录下)
Adafruit-GFX-Library-master —— GFX库(是一种图形库)
字模提取V2.2 —— 可以生成中文字点阵变量的软件
LS_PrintChinese —— 主程序
//显示中英文字符程序#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);#define LOGO16_GLCD_HEIGHT 16 //定义显示高度
#define LOGO16_GLCD_WIDTH 16 //定义显示宽度//中文:凌 (这就是存储点阵变量,str_1可以修改成自己喜欢的名称,用函数display.drawBitmap()调用就可以了)
static const unsigned char PROGMEM str_1[] =
{
0x00,0x40,0x40,0x40,0x23,0xF8,0x20,0x40,0x00,0x40,0x07,0xFE,0x11,0x10,0x12,0x88,
0x24,0x84,0xE1,0xF0,0x23,0x10,0x24,0xA0,0x20,0x40,0x20,0xA0,0x23,0x10,0x0C,0x0C};//中文:顺
static const unsigned char PROGMEM str_2[] =
{
0x04,0x00,0x45,0xFE,0x54,0x20,0x54,0x40,0x55,0xFC,0x55,0x04,0x55,0x24,0x55,0x24,
0x55,0x24,0x55,0x24,0x55,0x24,0x55,0x44,0x54,0x50,0x54,0x88,0x85,0x04,0x06,0x02};//中文:实
static const unsigned char PROGMEM str_3[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x88,0x84,0x04,0x80,0x04,0x80,0x10,0x80,
0x08,0x80,0x08,0x80,0xFF,0xFE,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x08,0x60,0x04};//中文:验
static const unsigned char PROGMEM str_4[] =
{
0x00,0x20,0xF8,0x20,0x08,0x50,0x48,0x50,0x48,0x88,0x49,0x04,0x4A,0xFA,0x7C,0x00,
0x04,0x44,0x04,0x24,0x1D,0x24,0xE4,0xA8,0x44,0x88,0x04,0x10,0x2B,0xFE,0x10,0x00};//中文:室
static const unsigned char PROGMEM str_5[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x3F,0xF8,0x04,0x00,0x08,0x20,
0x1F,0xF0,0x01,0x10,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00};#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endifvoid setup() { Serial.begin(9600);// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)// init donedisplay.clearDisplay();//英文字符显示display.setTextSize(1); //设置字体大小display.setTextColor(WHITE); //设置字体颜色白色display.setCursor(0,0); //设置字体的起始位置display.println("Hello, world!"); //输出字符并换行display.setTextColor(BLACK, WHITE); //设置字体黑色,字体背景白色 display.println(3.141592); //输出数字并换行display.setTextSize(2); //设置字体大小display.setTextColor(WHITE); //设置字体白色display.print("0x"); //输出字符display.println(0xDEADBEEF, HEX); //输出为ASCII编码的十六进制//display.display(); //显示以上//中文字符显示display.drawBitmap(26, 32, str_1, 16, 16, 1); //在坐标X:26 Y:16的位置显示中文字符凌display.drawBitmap(42, 32, str_2, 16, 16, 1); //在坐标X:42 Y:16的位置显示中文字符顺display.drawBitmap(58, 32, str_3, 16, 16, 1);display.drawBitmap(74, 32, str_4, 16, 16, 1);display.drawBitmap(90, 32, str_5, 16, 16, 1);display.display(); //把缓存的都显示
}void loop() {}
display.drawBitmap()调用就可以了)
static const unsigned char PROGMEM str_1[] =
{
0x00,0x40,0x40,0x40,0x23,0xF8,0x20,0x40,0x00,0x40,0x07,0xFE,0x11,0x10,0x12,0x88,
0x24,0x84,0xE1,0xF0,0x23,0x10,0x24,0xA0,0x20,0x40,0x20,0xA0,0x23,0x10,0x0C,0x0C};//中文:顺
static const unsigned char PROGMEM str_2[] =
{
0x04,0x00,0x45,0xFE,0x54,0x20,0x54,0x40,0x55,0xFC,0x55,0x04,0x55,0x24,0x55,0x24,
0x55,0x24,0x55,0x24,0x55,0x24,0x55,0x44,0x54,0x50,0x54,0x88,0x85,0x04,0x06,0x02};//中文:实
static const unsigned char PROGMEM str_3[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x88,0x84,0x04,0x80,0x04,0x80,0x10,0x80,
0x08,0x80,0x08,0x80,0xFF,0xFE,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x08,0x60,0x04};//中文:验
static const unsigned char PROGMEM str_4[] =
{
0x00,0x20,0xF8,0x20,0x08,0x50,0x48,0x50,0x48,0x88,0x49,0x04,0x4A,0xFA,0x7C,0x00,
0x04,0x44,0x04,0x24,0x1D,0x24,0xE4,0xA8,0x44,0x88,0x04,0x10,0x2B,0xFE,0x10,0x00};//中文:室
static const unsigned char PROGMEM str_5[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x3F,0xF8,0x04,0x00,0x08,0x20,
0x1F,0xF0,0x01,0x10,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00};#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endifvoid setup() { Serial.begin(9600);// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)// init donedisplay.clearDisplay();//英文字符显示display.setTextSize(1); //设置字体大小display.setTextColor(WHITE); //设置字体颜色白色display.setCursor(0,0); //设置字体的起始位置display.println("Hello, world!"); //输出字符并换行display.setTextColor(BLACK, WHITE); //设置字体黑色,字体背景白色 display.println(3.141592); //输出数字并换行display.setTextSize(2); //设置字体大小display.setTextColor(WHITE); //设置字体白色display.print("0x"); //输出字符display.println(0xDEADBEEF, HEX); //输出为ASCII编码的十六进制//display.display(); //显示以上//中文字符显示display.drawBitmap(26, 32, str_1, 16, 16, 1); //在坐标X:26 Y:16的位置显示中文字符凌display.drawBitmap(42, 32, str_2, 16, 16, 1); //在坐标X:42 Y:16的位置显示中文字符顺display.drawBitmap(58, 32, str_3, 16, 16, 1);display.drawBitmap(74, 32, str_4, 16, 16, 1);display.drawBitmap(90, 32, str_5, 16, 16, 1);display.display(); //把缓存的都显示
}void loop() {}
可能有人好奇这些乱七八糟的怎么来的?↓
这其实就用到 字模提取V2.2 的软件了,
分享地址:http://pan.baidu.com/s/1i50UmxB
打开软件,具体操作如下:
把点阵生成的数组,套入程序的相关变量,调用相关的函数就可以实现显示中文。
其实取模软件,就是把中文字转换成点阵,实现在没有中文字库程序中显示中文。
我想有字库的也是这样的点阵库,如有理解错误请指出。
Arduino Uno 驱动OLED进阶 显示中英文字相关推荐
- Arduino Uno 驱动OLED进阶 显示几何动画
这篇文章主要翻译国外某大神的作品 本示例可以学会如何画线条 先看看效果 YOUTUBE视频 https://www.youtube.com/watch?v=_t_lfcGV_YM GITHUB 原代 ...
- esp32使用MicroPython驱动oled屏显示中文和英文
文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...
- Arduino Nano 驱动OLED滚动显示
尽管Uno R3开发板是Arduino家族中入门级别的首选,但无奈它的体积实在有些大,我们实际中很多设计都需要考虑外形结构,小巧便捷而又功能齐全的Arduino Nano开发板就脱颖而出了.本篇我们使 ...
- Arduino UNO驱动TM1637四位时钟数码管显示时间
Arduino UNO驱动TM1637四位时钟数码管显示时间 一.TM1637简介 二.引脚定义 三.Arduino UNO与数码管模块接线 四.测试代码 五.实验结果 一.TM1637简介 TM16 ...
- Arduino UNO驱动合宙1.8‘TFT SPI屏幕示例演示(含资料包)
Arduino UNO驱动合宙1.8"TFT SPI屏幕示例演示 效果展示 驱动参考资料包 来源于:http://www.lcdwiki.com/zh/1.8inch_Arduino_SPI ...
- esp32 spi 驱动 oled 屏显示来自 PC 的画面
esp32 spi 驱动 oled 屏显示来自 PC 的画面 实验代码 gayhub 实验源码 设备及运行环境 装有python的电脑 Python 3.8.2 (tags/v3.8.2:7b3ab5 ...
- Arduino uno 驱动安装问题解决(win10)
Arduino uno 驱动安装问题解决(win10) 今天安装uno的驱动怎么也安装不上,从网上找了各种帖子,终于解决了问题 首先说一下遇到的问题: 1.插入uno板在arduino中无法设置端口, ...
- Arduino UNO驱动土壤湿度传感器检测
Arduino UNO驱动土壤湿度传感器检测 简介 运行要求 Arduino UNO与传感器接线 程序展示 实践效果 总结 简介 本次使用到是这个新款土壤湿度传感器! 这款电容式土壤湿度传感器区别于市 ...
- Arduino UNO驱动MCP9808高精度数字温度传感器
Arduino UNO驱动MCP9808高精度数字温度传感器 MCP9808简介 引脚定义 Arduino UNO与MCP9808模块接线 程序与实验结果 MCP9808简介 MCP9808 数字温度 ...
最新文章
- mysql定时任务如何每天0点跑_mysql定时任务,每天的零点执行一个存储过程
- 使用repeater,遍历数据,不规则排序,不同的样式之间切换
- 数据中心机房蓄电池培训
- 软件测试部分习题答案
- 到无限(溪流)和超越!
- Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法
- oracle tns和sid,oracle – TNS-12505:TNS:侦听器当前不知道连接描述符中给出的SID
- php推送系统,php 如何加入即时推送的功能
- linux下添加新硬盘的方法
- Cover V2将启用两条产品线 本周开始进行V2 UI开发
- 用tqdm可视化loop过程
- java 分卷 zip
- 047ssm在线视频教育网站源码
- Linux随笔15-Ubuntu20.04允许root用户图形界面登录、chrony局域网时间同步服务、ipxe实现系统自动化安装
- CAD 卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件
- [转载] 过 DNF TP 驱动保护
- 共享LPT口打印机打印时,注意事项
- 费解的开关 Java
- 学习Unity需要学习哪些编程语言
- 【搜索】搜刷刷题整理
热门文章
- 2022年全球与中国光通信芯片市场现状及未来发展趋势
- 什么是 Web 服务器(server)
- 山科大离散数学期末考试_离散数学期末考试及答案
- 云师大计算机调剂,云南师范大学最新调剂名额-昆明考研必看
- Ubuntu虚拟机中VCS安装和启动过程中遇到的问题总结
- 网络编程-HttpURLConnection
- 【观察】打造中国“酷公司”新标杆,联想陪伴中小企业共同成长
- shell 十三问:
- KKT条件(Karush-Kuhn-Tucker)及二阶充分条件(The second-order sufficiency condition)
- 纳什均衡 (Nash Equilibrium)