U8g2库I2C总线再次突破性调试成功
Posted 极客阿正
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了U8g2库I2C总线再次突破性调试成功相关的知识,希望对你有一定的参考价值。
这次采用U8X8的方式,不再采用u8g2,因为后者一直报内存问题。所以采用了不占内存的u8x8模式
同时u8g2库文件的示例代码也是很牛逼的,
里面还有message box 非常的可爱运行效果也非常棒!
代码如下
1 #include <Arduino.h> 2 #include <U8x8lib.h> 3 4 #ifdef U8X8_HAVE_HW_SPI 5 #include <SPI.h> 6 #endif 7 U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display 8 void setup(void) 9 { 10 //u8x8.begin();//可以定义按键如下 11 u8x8.begin(/*Select=*/ 7, /*Right/Next=*/ A1, /*Left/Prev=*/ A2, /*Up=*/ A0, /*Down=*/ A3, /*Home/Cancel=*/ 8); 12 13 u8x8.setPowerSave(0); 14 } 15 void loop(void) 16 { 17 /*u8x8.setFont(u8x8_font_chroma48medium8_r); 18 u8x8.drawString(0,0,"Hello World!"); 19 u8x8.refreshDisplay(); 20 delay(2000);*/ 21 22 uint8_t r; 23 u8x8.setFont(u8x8_font_chroma48medium8_r); 24 r = u8x8_UserInterfaceMessage(u8x8.getU8x8(), "Message", "Box", NULL, " Ok \\n Cancel "); 25 if ( r == 0 ) 26 { 27 u8x8.userInterfaceMessage("You pressed the", "Home/Quit", "Button", " Ok "); 28 } 29 else if ( r == 1 ) 30 { 31 u8x8.userInterfaceMessage("You selected the", "Ok", "Button", " Ok "); 32 } 33 else if ( r == 2 ) 34 { 35 u8x8.userInterfaceMessage("You selected the", "Cancel", "Button", " Ok "); 36 } 37 }
再也没有出现之前的动不动就报内存不足的问题。
同时还可以自己生成位图进行显示,比如二维码,不过,识别起来很吃力
代码如下
1 #include <SPI.h> 2 #include <Wire.h> 3 #include <Adafruit_GFX.h> 4 #include <Adafruit_SSD1306.h> 5 6 #define OLED_RESET 4 7 Adafruit_SSD1306 display(OLED_RESET); 8 9 static const unsigned char PROGMEM logo[] = 10 { 11 0x9F,0xFE,0x6C,0x38,0xFF,0x6F,0xFF,0xFE,0xBF,0xFE,0x6C,0x38,0xFF,0x6F,0xFF,0xFE, 12 0xFF,0xFF,0xEF,0xB8,0xFF,0x7F,0xFF,0xFE,0xBF,0xFF,0xFF,0x9F,0xFF,0x7F,0x1F,0xFE, 13 0xFF,0xDF,0x39,0x9F,0xBE,0x7F,0x1F,0xFE,0xFF,0xFF,0x3D,0xFF,0xBF,0x7F,0xFF,0xFE, 14 0xFF,0xFF,0xFD,0xFE,0xFF,0xCF,0xFF,0xFE,0xFE,0xF7,0xCD,0x9E,0xF7,0xCF,0x9F,0xF2, 15 0xFF,0x7D,0x8D,0xBE,0xF7,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xB7,0xFF,0xFF,0xFE, 16 0xFF,0xFF,0xFF,0xDB,0xB7,0xFF,0xFF,0xFE,0xFF,0xEF,0xF7,0xFB,0xBF,0xFF,0xFF,0xFE, 17 0x36,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xFE,0x36,0xF3,0xFC,0xC3,0xF7,0x3F,0xFF,0xFE, 18 0xF7,0xE5,0xFF,0xFF,0xF7,0x3F,0xFF,0xFE,0xF7,0x81,0xFF,0x3E,0xF6,0x00,0x36,0x0E, 19 0xF8,0x73,0xF9,0xBF,0xD8,0x6C,0xE7,0xFE,0xFF,0xFF,0xFF,0xFF,0xD8,0x6F,0xF7,0xFE, 20 0xF7,0x8F,0xE5,0xDF,0x80,0x07,0xF6,0x00,0x3F,0xF8,0x3F,0xD8,0xDF,0x3F,0x3E,0xD8, 21 0xFF,0xFE,0x3F,0xFE,0xFF,0x3F,0xFE,0xD8,0xFC,0x0E,0x0C,0x3E,0x36,0x00,0xFE,0xC0, 22 0x36,0xFF,0x6C,0xFB,0xBF,0x6F,0x3F,0x8E,0x37,0xFF,0xFC,0xFF,0xFF,0xFF,0x3F,0xFE, 23 0x37,0xDF,0xFC,0x3F,0xFF,0xFC,0x3F,0xFC,0xFE,0xF3,0xED,0xB7,0xB3,0x0D,0xFF,0xF0, 24 0xFE,0xEF,0xEF,0xFF,0xB7,0x0F,0xFF,0xF0,0xF4,0xCE,0x07,0xFE,0x36,0x03,0xFE,0x70, 25 0x1F,0xE1,0xFF,0xB6,0xF6,0xF8,0xE6,0xD8,0x1F,0xE3,0xFF,0xF6,0xF7,0xFF,0xE7,0xD8, 26 0x06,0x03,0x7F,0xC6,0x03,0x67,0xE3,0x80,0xFE,0xF3,0x0D,0xF3,0xB6,0x6D,0xBF,0xF0, 27 0xFF,0xFF,0xFD,0xF3,0xBF,0xFF,0xFF,0xF8,0x07,0x9F,0xFD,0x83,0xBF,0xFF,0xE3,0x98, 28 0x36,0x7E,0x6F,0xFB,0x86,0x6F,0xFF,0x8E,0xF6,0x7E,0x6F,0xFF,0x87,0x7F,0xFF,0x8E, 29 0xE0,0x00,0x67,0xC6,0x03,0x3F,0xF7,0x80,0x33,0xFF,0xFF,0x00,0xDE,0x3F,0xF0,0xDE, 30 0xFB,0xFF,0xFF,0xFE,0xFE,0x3F,0xFE,0xDE,0xFC,0x0E,0x07,0xFE,0xF6,0x0F,0xFE,0xCE, 31 0xF6,0x7F,0x6C,0x3B,0xBE,0x6D,0xBF,0xFE,0xF7,0xFF,0xEC,0x3F,0xFF,0xED,0xBF,0xFE, 32 0x33,0xDE,0x6C,0x1F,0xFF,0xCC,0x1C,0xFE,0xFE,0xF0,0x4D,0xBB,0xB7,0xED,0x87,0xF0, 33 0xFE,0xEF,0xED,0xFF,0xF3,0xEF,0xFF,0xFE,0xFC,0xCE,0x0C,0xFE,0xC2,0x07,0xFE,0xCE, 34 0xFF,0xE3,0xFF,0xF6,0xC3,0xFF,0xB6,0xF0,0xFF,0xE3,0xFF,0xF7,0xC3,0xFF,0xFE,0xF8, 35 0xF8,0x03,0x7F,0xF3,0x83,0x7F,0xFE,0xD8,0xFE,0xF3,0xFF,0xFF,0xB3,0xFF,0xFF,0x98, 36 0xF6,0xFF,0xEF,0x9F,0xB7,0xED,0xFF,0xF8,0x00,0x0E,0x6F,0x1B,0xB7,0x6D,0xE3,0xF8, 37 0xFF,0xFF,0xFE,0x3B,0xB7,0xFF,0xFF,0xF8,0xFF,0xFF,0xFE,0x3E,0xDB,0xFF,0xFF,0xFE, 38 0xE0,0x5F,0x77,0x1E,0xDB,0xFF,0xE3,0xFE,0xFF,0xF7,0x7F,0xBF,0xDB,0xFF,0xFF,0xFE, 39 0xFF,0xFF,0x7F,0xFB,0xDB,0xFF,0xFF,0xF8,0xFF,0xFF,0x7F,0xC3,0xD8,0x07,0xFC,0xD8, 40 0xFF,0xFF,0x7F,0xC3,0xFB,0xFF,0xFF,0xF8,0xFF,0xFF,0x79,0x9B,0xFF,0xFC,0x7F,0xF8, 41 0xE0,0x7F,0x61,0x9B,0x9F,0x6C,0xFF,0xD8,0xF7,0xFF,0xFD,0x9B,0xDF,0xFC,0x7F,0xD8, 42 0xFF,0xE1,0xFC,0x00,0xC7,0xFC,0x00,0x00/*"C:\\Users\\Administrator\\Desktop\\6464qrco000000000de_15134800003995111111111111111827.bmp",0*/}; 43 44 #if (SSD1306_LCDHEIGHT != 64) 45 #error("Height incorrect, please fix Adafruit_SSD1306.h!"); 46 #endif 47 48 void setup() { 49 Serial.begin(9600); 50 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 51 display.clearDisplay(); 52 display.drawBitmap(0, 0, logo, 64, 64, 1); 53 } 54 55 void loop() { 56 //display.drawBitmap(0, 0, logo, 64, 64, 1); //在坐标X0,Y0的位置开始显示图片 57 //128是取模软件显示的宽度 58 //64是取模软件显示的高度 59 // display.display(); //把缓存的都显示 60 //delay(1); 61 62 // display.clearDisplay(); //清除屏幕 63 }
以上是关于U8g2库I2C总线再次突破性调试成功的主要内容,如果未能解决你的问题,请参考以下文章
基于Lua框架下Air103使用U8g2库驱动I2C OLED图像显示
ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示