一、参考

  1. Adafruit的SSD1306驱动https://blog.csdn.net/tiandiren111/article/details/122019747
  2. U8G2参考https://blog.csdn.net/qq_40531588/article/details/89515149

二、步骤

  1. 参考上面链接的大佬,先成功显示

  2. 我们这里选择Adafruit的U8G2库,不需要用到原始的

  3. 按照库上面的More info查看使用说明 https://github.com/olikraus/U8g2_for_Adafruit_GFX

  4. 我这里加载了一中文显示,使用带的字库就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);}
    

三、库漏洞修改

  1. 对于这个库,可以使用u8g2自带的GBK库 u8g2_font_wqy12_t_gb2312 ,但是使用后,会提示

    out section `.rodata' will not fit in region `dram0_0_seg'
    

    这个编译错误,查看源码后发现,是因为定义数组没有放到 TXT段中导致的…这里直接就丢到Dram了,很不合理

  2. 所以作出下面的修改 对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相关推荐

  1. ⑥ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 OLED屏幕】

    ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 目录 ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 适用范围 user_c ...

  2. Arduino + OLED游戏开发项目实例

    Arduino + OLED游戏项目实例 在Arduino 平台提供游戏开发实例的OLED库,莫过于只有 https://github.com/lexus2k/ssd1306 https://hub. ...

  3. ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器

    ESP8266 Arduino开发之路(2)- 连接到无线WiFi路由器 一.前言 ESP8266可以通过WiFi连接到无线路由器,这种方式和手机通过WiFi连接无线路由器的模式是相同的,我们称该模式 ...

  4. 傻乖透明小电视(最近在苦逼实习,实习结束整理发布,先来点彩蛋,关注后不会错过哦~)——ESP8266 NodeMCU+OLED+DFPlayer Mini+小喇叭

    傻乖透明小电视(最近在苦逼实习,实习结束整理发布,先来点彩蛋,关注后不会错过哦~)--ESP8266 NodeMCU+OLED+DFPlayer Mini+小喇叭 显示 ESP8266 NodeMCU ...

  5. ESP8266+SH1106 OLED屏实现天气预报+温度显示+NTP时间同步6屏带中文显示V7.5版

    ESP8266+SH1106 OLED屏实现天气预报+温度显示+NTP时间同步6屏带中文显示V7.5版 最新补充到V8.6 在上一版本基础上,添加了一屏幕城市地标ICON显示. 显示效果如下: 其他屏 ...

  6. 和ESP8266 Arduino谈场恋爱

    非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广大技术宅男传授深度撩妹技巧.是时候了,关掉屏幕上的波多野结 ...

  7. 和ESP8266 Arduino谈场恋爱 03 玩几个例程

    前言 开发环境搭起来,找几个例程玩起来. 非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广大技术宅男传授深 ...

  8. 和ESP8266 Arduino谈场恋爱 02 这神奇的程序烧写

    前言 开发环境搭起来了,接着这篇笔记就要实现程序的烧写. 非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广 ...

  9. 和ESP8266 Arduino谈场恋爱 01 一条具有中国特色的开发环境安装道路

    前言 废话不多说,环境先搞起来. 非著名情感博主 IoT小能手 twowinter,耗费数月心血,编著长篇言情小说<和ESP8266 Arduino谈场恋爱>,为广大技术宅男传授深度撩妹技 ...

最新文章

  1. 把变量赋值给寄存器_用C语言对DSP的寄存器进行操作?
  2. JavaScript 设计模式的七大原则(未完成)
  3. 【Swing编写图形用户界面】操作系统之磁盘调度算法图形界面和性能比较
  4. python ocr中文识别库 tesseract安装及问题处理
  5. linux不能识别 符号,在linux中文件中^M符号的问题以及中文识别问题
  6. LeetCode 366. 寻找二叉树的叶子节点(上下翻转二叉树+BFS)
  7. linux分区方案 arv,Linux运维 第三阶段 (九)NFS
  8. P5056 【模板】插头dp
  9. 互联网+电子招投标,正成为一种趋势
  10. CAD必备插件分享 快速提高工作效率
  11. 从零建造一个基于深度强化学习的期货日内高频交易模型(一)下载数据
  12. 汽车电子控制器(ECU)的硬件设计流程
  13. java转Js原生,Java到JavaScript的转换
  14. 问佛 (佛是過來人,人是未來佛)
  15. POJ-1436___Horizontally Visible Segments —— 线段树
  16. 开源共轴双桨无人机 Tdrone 软硬件全部在 GitHub 开源
  17. 短视频如何做好数据分析 掌握数据分析技巧
  18. winner is not quitter!quitter is not winner!
  19. 《西游记》八十一难的顺序
  20. php 7 current time,PHP检查当前时间(PHP check current time)

热门文章

  1. 比心app源码,获取系统时间
  2. CBL-Mariner
  3. Mysql存储过程名规则_数据库对象命名规范一(原则、命名、 表、视图、存储过程、函数、触发器命名规范)...
  4. ImageJ自动细胞计数的方法以及批量处理多张图片
  5. [Python基础]列表List
  6. 免费送全国计算机等级考试资料(新增Python题库)
  7. 银河麒麟中的录屏软件
  8. GitHub学习总结
  9. stm32学习笔记——通用计时器基本原理
  10. 彻底删除Cygwin