用Arduino显示颜色序列(u8g2,OLED)
用Arduino显示颜色序列(u8g2,OLED)
提前祝大家新年快乐!
主控:Arduino Mega 2560
硬件:126×64 OLED屏幕
IDE:Arduino官方IDE
u8g2库是Arduino常用于驱动OLED屏幕的好库,里面有非常多好用的函数,而且可以匹配不同驱动,不同分辨率的OLED屏幕,网上也有很多人对其进行了详尽的介绍,我这里就不再赘述,有需要的可以通过传送门学习一下u8g2库的函数:传送门(深入学习Arduino u8g2 OLED库,一篇就够)
如果没有u8g2库的可以去Github上去下载,地址:(https://github.com/olikraus/u8g2)
或者用蓝奏云(我网上找的,不知道哪个版本):传送门(蓝奏云)
今天测试的是网上买的一个普通OLED屏幕

显示颜色序列采用的是类似“123+231”的形式,要将其显示在屏幕上,且对字高有一定需求

因此我使用了PCtoLCD2002软件,还是取字模->打印图的操作
PCtoLCD2002下载地址:传送门(蓝奏云)
代码也很简单,直接放上来
Test_OLED.ino
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
String str = "123+321";
void setup() {
// put your setup code here, to run once:
OLED_Init();
}
void loop() {
// put your main code here, to run repeatedly:
OLED_Display(str);
while (1);
}
OLED.ino
char ScanNum_One[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00,
0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x80, 0x3F,
0x00, 0x80, 0x3F, 0x00, 0xC0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xF0, 0x3F, 0x00,
0xF8, 0x3F, 0x00, 0xF8, 0x3F, 0x00, 0xF8, 0x3F, 0x00, 0xF8, 0x3E, 0x00, 0xF8, 0x3E, 0x00, 0x78,
0x3E, 0x00, 0x78, 0x3E, 0x00, 0x38, 0x3E, 0x00, 0x18, 0x3E, 0x00, 0x18, 0x3E, 0x00, 0x08, 0x3E,
0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00,
0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E,
0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00,
0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
char ScanNum_Two[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xC0, 0x3F, 0x00, 0xE0, 0x7F, 0x00, 0xE0,
0xFF, 0x00, 0xF0, 0xFF, 0x00, 0xF0, 0xFF, 0x00, 0xF8, 0xFF, 0x01, 0xF8, 0xFF, 0x01, 0xF8, 0xFF,
0x01, 0xF8, 0xF9, 0x03, 0xF8, 0xF0, 0x03, 0xFC, 0xF0, 0x03, 0x7C, 0xE0, 0x03, 0x7C, 0xE0, 0x03,
0x7C, 0xE0, 0x03, 0x7C, 0xE0, 0x03, 0x70, 0xE0, 0x03, 0x00, 0xE0, 0x03, 0x00, 0xE0, 0x03, 0x00,
0xE0, 0x03, 0x00, 0xE0, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF8,
0x01, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00,
0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x80, 0x1F, 0x00, 0x80, 0x1F, 0x00, 0xC0,
0x0F, 0x00, 0xC0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xF0, 0x01,
0x00, 0xF0, 0x01, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0xFC, 0xFF, 0x03,
0xFC, 0xFF, 0x03, 0xFC, 0xFF, 0x03, 0xFC, 0xFF, 0x03, 0xFC, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0xFE,
0xFF, 0x03, 0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
char ScanNum_Three[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0xC0, 0x1F, 0x00, 0xE0, 0x3F, 0x00, 0xE0,
0x7F, 0x00, 0xF0, 0x7F, 0x00, 0xF0, 0x7F, 0x00, 0xF8, 0xFF, 0x00, 0xF8, 0xFF, 0x00, 0xF8, 0xFF,
0x00, 0xF8, 0xF9, 0x01, 0xFC, 0xF8, 0x01, 0xFC, 0xF0, 0x01, 0x7C, 0xF0, 0x01, 0x7C, 0xF0, 0x01,
0x7C, 0xF0, 0x01, 0x60, 0xF0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF0, 0x01, 0x00,
0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F,
0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
0x00, 0xF8, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xE0, 0x03, 0x00, 0xE0, 0x03, 0x00,
0xE0, 0x03, 0x00, 0xE0, 0x03, 0x00, 0xE0, 0x03, 0x00, 0xE0, 0x03, 0x30, 0xE0, 0x03, 0x3E, 0xE0,
0x03, 0x3E, 0xE0, 0x03, 0x3E, 0xE0, 0x03, 0x7E, 0xF0, 0x03, 0x7E, 0xF0, 0x03, 0x7C, 0xF0, 0x01,
0xFC, 0xF8, 0x01, 0xFC, 0xFF, 0x01, 0xFC, 0xFF, 0x01, 0xF8, 0xFF, 0x00, 0xF8, 0xFF, 0x00, 0xF0,
0x7F, 0x00, 0xF0, 0x7F, 0x00, 0xE0, 0x3F, 0x00, 0xC0, 0x1F, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
char ScanNum_jia[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00,
0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00,
0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0xFE, 0xFF, 0x03, 0xFE, 0xFF,
0x03, 0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03,
0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0xFE, 0xFF, 0x03, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00,
0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F,
0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00,
0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
void OLED_Init()
{
u8g2.begin();
u8g2.enableUTF8Print();
u8g2.setFont(u8g2_font_logisoso58_tn);//不设置也没事
u8g2.setFontDirection(0);
u8g2.clearBuffer();
}
void OLED_Display(String temp)
{
u8g2.clearBuffer();
for (int i = 0; i < 7; ++i)
{
char str = temp.charAt(i);
switch (str)
{
case '1': u8g2.drawXBM(18 * i, 0, 18, 60, ScanNum_One); break;
case '2': u8g2.drawXBM(18 * i, 0, 18, 60, ScanNum_Two); break;
case '3': u8g2.drawXBM(18 * i, 0, 18, 60, ScanNum_Three); break;
case '+': u8g2.drawXBM(18 * i, 0, 18, 60, ScanNum_jia); break;
default: break;
}
}
u8g2.sendBuffer();
}
手边没有Arduino板,演示不了.....有时间我再上传图
测试很成功~
用Arduino显示颜色序列(u8g2,OLED)的更多相关文章
- 玩转u8g2 OLED库 MAX7219_32X8点阵模块
u8g2 OLED库 + MAX7219_32X8点阵模块 理论基础 玩转u8g2 OLED库,一篇就够 玩转u8g2 OLED库,一篇就够(字数太多 要分篇) 实验内容 Full screen bu ...
- 玩转u8g2 OLED库,一篇就够(分篇)
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- Ubuntu终端命令行不显示颜色
在网上找到的一个有效方案是在.bash_profile 中增加颜色定义 export LS_COLORS='di=01;35:ln=01;36:pi=40;33:so=01;35:do=01;35:b ...
- vim 显示颜色脚本
vim 显示颜色脚本 echo TERM=xterm >>/root/.bash_profile echo export TERM >>/root/.bash_profile ...
- Python:print显示颜色
显示颜色格式:\033[显示方式;字体色;背景色m......[\033[0m] ------------------------------------------- --------------- ...
- cojs 疯狂的魔法树 疯狂的颜色序列 题解报告
疯狂的魔法树 一个各种操作大杂烩的鬼畜数据结构题目 首先我们注意到树的形态是半随机的 我们可以树分块,对树分成若干个块 对于每个块我们维护一个add标记表示增量 维护一个vis标记表示覆盖量 注意标记 ...
- 为archlinux终端ls不同类型文件设置不同显示颜色
title: 为archlinux终端ls不同类型文件设置不同显示颜色 date: 2017-11-13 20:53:55 tags: linux categories: linux archlinu ...
- 设置UniDbGrid的整行显示颜色,如果某字段值是我们的控制字段
设置UniDbGrid的整行显示颜色,如果某字段值是我们的控制字段,使用下列判断设置更快捷一点: procedure TUniForm.UniDBGridDrawColumnCell(Sender: ...
- echo 内容显示颜色
一,字体显示颜色 #字体颜色:30m-37m 黑.红.绿.黄.蓝.紫.青.白str=”要显示的字体“echo -e "\033[30m ${str}\033[0m" ## ...
随机推荐
- 安卓性能测试之Lint测试
pre { direction: ltr; color: rgba(0, 0, 10, 1); text-align: left } pre.western { font-family: " ...
- 初始化properties
package com.letech.common; import java.io.IOException; import java.util.Properties; public class Con ...
- vue行内动态添加样式或者动态添加类名
还是记录一下吧(๑•ᴗ•๑) <li :style="{backgroundImage:`url(${item.pic})`}" @click="chooseVip ...
- 关于json对象的使用小结!
json是前后端数据交互的关键.后端提供的接口中的数据几乎都是通过json来表现的,所以,需要对这个json做一些小结: 这里要推进谷歌的插件Fehelp前端助手,这个可以清楚的看到json的数据: ...
- Java报错:Failed to execute goal org.eclipse.jetty:jetty-maven-plugin:9.4.26.v20200117:run (default-cli) on project ssm-mybatis-plus: Failure
修改一下端口就好了,不要用80端口. <plugin> <groupId>org.eclipse.jetty</groupId> <!--嵌入式Jetty的M ...
- 一. 为什么要用SpringMVC框架
以前是怎么做项目的.CoreServlet,起到一个中心处理器作用.所有的请求到服务器,服务器给CoreServlet,在里面处理所有表的增删改查,跳转也在里面做.以前做部门就是 DepServlet ...
- 爬虫---scrapy分布式和增量式
分布式 概念: 需要搭建一个分布式的机群, 然后在每一台电脑中执行同一组程序, 让其对某一网站的数据进行联合分布爬取. 原生的scrapy框架不能实现分布式的原因 调度器不能被共享, 管道也不能被共享 ...
- Java中最早期的集合Vector
1.Vector类可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作. 2 ...
- random模块、os模块、序列化模块、sy模块s、subprocess模块
random随机数模块 random.random( ) 随机产生一个0-1之间的小数 print(random.random()) # 0.31595547439342897 random.rand ...
- 探索Django验证码功能的实现 - DjangoStarter项目模板里的封装
前言 依然是最近在做的这个项目,用Django做后端,App上提交信息的时候需要一个验证码来防止用户乱提交,正好我的「DjangoStarter」项目脚手架也有封装了验证码功能,不过我发现好像里面只是 ...