ESP8266 Arduino OLED
一、参考
- Adafruit的SSD1306驱动https://blog.csdn.net/tiandiren111/article/details/122019747
- U8G2参考https://blog.csdn.net/qq_40531588/article/details/89515149
二、步骤
参考上面链接的大佬,先成功显示
我们这里选择Adafruit的U8G2库,不需要用到原始的
按照库上面的More info查看使用说明 https://github.com/olikraus/U8g2_for_Adafruit_GFX
我这里加载了一中文显示,使用带的字库就OK了,但是只能显示小部分汉字
/** oled_infor* OLED显示连网信息*/ #include <ESP8266WiFi.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <U8g2_for_Adafruit_GFX.h>const char* ssid = "your-ssid";//连接WIFI名(SSID) const char* password = "your-password";//WIFI密码Adafruit_SSD1306 oled(128, 32, &Wire,-1); U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx;void setup() {oled.begin(SSD1306_SWITCHCAPVCC,0x3C);/*oled.setTextColor(WHITE);//开像素点发光oled.clearDisplay();//清屏oled.setTextSize(1); //设置字体大小 oled.setCursor(15, 5);//设置显示位置oled.println("WiFi Information");oled.setCursor(2, 20);//设置显示位置 WiFi.begin(ssid,password);//启动网络连接while (WiFi.status() != WL_CONNECTED)//检测网络是否连接成功{delay(500);oled.print(".");//设置显示位置oled.display(); // 开显示}oled.setTextSize(1);//设置字体大小 oled.setCursor(2, 35);//设置显示位置oled.println("Connected,IP address:");oled.println();oled.println(WiFi.localIP());oled.display(); // 开显示 */u8g2_for_adafruit_gfx.begin(oled);}void loop() {oled.clearDisplay(); // clear the graphcis buffer u8g2_for_adafruit_gfx.setFontMode(1); // use u8g2 transparent mode (this is default)u8g2_for_adafruit_gfx.setFontDirection(0); // left to right (this is default)u8g2_for_adafruit_gfx.setForegroundColor(WHITE); // apply Adafruit GFX coloru8g2_for_adafruit_gfx.setFont(u8g2_font_wqy12_t_chinese2); // select u8g2 font from here: https://github.com/olikraus/u8g2/wiki/fntlistall u8g2_font_wqy12_t_chinese2u8g2_for_adafruit_gfx.setCursor(0,16); // start writing at this positionu8g2_for_adafruit_gfx.print(("这真的好吗"));//u8g2_for_adafruit_gfx.setCursor(0,32); // start writing at this position//u8g2_for_adafruit_gfx.print(("I'm FC")); // UTF-8 string with german umlaut charsoled.display(); // make everything visibledelay(2000);}
三、库漏洞修改
对于这个库,可以使用u8g2自带的GBK库
u8g2_font_wqy12_t_gb2312
,但是使用后,会提示out section `.rodata' will not fit in region `dram0_0_seg'
这个编译错误,查看源码后发现,是因为定义数组没有放到 TXT段中导致的…这里直接就丢到Dram了,很不合理
所以作出下面的修改 对8266做特殊处理 (这个问题是参考u8g2库做的修改,现在用这个for_adafruit实在是旧…BUG都没修复)
C:\Users\Administrator\Documents\Arduino\libraries\U8g2_for_Adafruit_GFX\src\u8g2_fonts.h
中增加放TXT段,并且加入读取TXT段的函数(必加,否则会死机复位)#if defined(ESP8266) uint8_t u8x8_pgm_read_esp(const uint8_t * addr); /* u8x8_8x8.c */ # define U8X8_FONT_SECTION(name) __attribute__((section(".text." name))) # define u8x8_pgm_read(adr) u8x8_pgm_read_esp(adr) #endif
C:\Users\Administrator\Documents\Arduino\libraries\U8g2_for_Adafruit_GFX\src\U8g2_for_Adafruit_GFX.cpp
中增加#if defined(ESP8266) uint8_t u8x8_pgm_read_esp(const uint8_t * addr) {uint32_t bytes;bytes = *(uint32_t*)((uint32_t)addr & ~3);return ((uint8_t*)&bytes)[(uint32_t)addr & 3]; } #endif
四、测试结果
ESP8266 Arduino OLED相关推荐
- ⑥ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 OLED屏幕】
⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 目录 ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 适用范围 user_c ...
- Arduino + OLED游戏开发项目实例
Arduino + OLED游戏项目实例 在Arduino 平台提供游戏开发实例的OLED库,莫过于只有 https://github.com/lexus2k/ssd1306 https://hub. ...
- ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器
ESP8266 Arduino开发之路(2)- 连接到无线WiFi路由器 一.前言 ESP8266可以通过WiFi连接到无线路由器,这种方式和手机通过WiFi连接无线路由器的模式是相同的,我们称该模式 ...
- 傻乖透明小电视(最近在苦逼实习,实习结束整理发布,先来点彩蛋,关注后不会错过哦~)——ESP8266 NodeMCU+OLED+DFPlayer Mini+小喇叭
傻乖透明小电视(最近在苦逼实习,实习结束整理发布,先来点彩蛋,关注后不会错过哦~)--ESP8266 NodeMCU+OLED+DFPlayer Mini+小喇叭 显示 ESP8266 NodeMCU ...
- ESP8266+SH1106 OLED屏实现天气预报+温度显示+NTP时间同步6屏带中文显示V7.5版
ESP8266+SH1106 OLED屏实现天气预报+温度显示+NTP时间同步6屏带中文显示V7.5版 最新补充到V8.6 在上一版本基础上,添加了一屏幕城市地标ICON显示. 显示效果如下: 其他屏 ...
- 和ESP8266 Arduino谈场恋爱
非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广大技术宅男传授深度撩妹技巧.是时候了,关掉屏幕上的波多野结 ...
- 和ESP8266 Arduino谈场恋爱 03 玩几个例程
前言 开发环境搭起来,找几个例程玩起来. 非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广大技术宅男传授深 ...
- 和ESP8266 Arduino谈场恋爱 02 这神奇的程序烧写
前言 开发环境搭起来了,接着这篇笔记就要实现程序的烧写. 非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广 ...
- 和ESP8266 Arduino谈场恋爱 01 一条具有中国特色的开发环境安装道路
前言 废话不多说,环境先搞起来. 非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广大技术宅男传授深度撩妹技 ...
最新文章
- 把变量赋值给寄存器_用C语言对DSP的寄存器进行操作?
- JavaScript 设计模式的七大原则(未完成)
- 【Swing编写图形用户界面】操作系统之磁盘调度算法图形界面和性能比较
- python ocr中文识别库 tesseract安装及问题处理
- linux不能识别 符号,在linux中文件中^M符号的问题以及中文识别问题
- LeetCode 366. 寻找二叉树的叶子节点(上下翻转二叉树+BFS)
- linux分区方案 arv,Linux运维 第三阶段 (九)NFS
- P5056 【模板】插头dp
- 互联网+电子招投标,正成为一种趋势
- CAD必备插件分享 快速提高工作效率
- 从零建造一个基于深度强化学习的期货日内高频交易模型(一)下载数据
- 汽车电子控制器(ECU)的硬件设计流程
- java转Js原生,Java到JavaScript的转换
- 问佛 (佛是過來人,人是未來佛)
- POJ-1436___Horizontally Visible Segments —— 线段树
- 开源共轴双桨无人机 Tdrone 软硬件全部在 GitHub 开源
- 短视频如何做好数据分析 掌握数据分析技巧
- winner is not quitter!quitter is not winner!
- 《西游记》八十一难的顺序
- php 7 current time,PHP检查当前时间(PHP check current time)