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总线再次突破性调试成功的主要内容,如果未能解决你的问题,请参考以下文章

玩转u8g2 OLED库,一篇就够(分篇)

基于Lua框架下Air103使用U8g2库驱动I2C OLED图像显示

ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示

ESP8266驱动SSD1306 ESP8266 for Arduino(NodeMCU U8G2库)

Linux I2C总线驱动调试之i2c-tools工具使用

玩转u8g2 OLED库 MAX7219_32X8点阵模块