Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Io_moon by
oled.cpp
00001 #ifndef OLED_CPP_ 00002 #define OLED_CPP_ 00003 #include "mbed.h" 00004 #include "oled.h" 00005 00006 //I2C g_i2c(P0_11, P0_10);//SDA, SCL 00007 extern I2C g_i2c; 00008 //Adafruit_SSD1306_I2c adaf(g_i2c, P0_13, 0x78, 64, 128); 00009 00010 //U8GLIB_SSD1306_MICRODUINO_128X64 u8g(U8G_I2C_OPT_NONE); //设置OLED型号 00011 //-------字体设置,大、中、小 00012 #if 0 00013 #define setFont_L u8g.setFont(u8g_font_7x13) 00014 #define setFont_M u8g.setFont(u8g_font_fixed_v0r) 00015 #define setFont_S u8g.setFont(u8g_font_chikitar) 00016 #elif 0 00017 #define setFont_L adaf.setTextSize(14) 00018 #define setFont_M adaf.setTextSize(10) 00019 #define setFont_S adaf.setTextSize(6) 00020 #else 00021 #define setFont_L 00022 #define setFont_M 00023 #define setFont_S 00024 #endif 00025 00026 //温度计图案 00027 unsigned char bmp_tem[] = { 00028 0xE0,0x81,0x30,0x83,0x10,0x82,0x10,0x82,0x10,0xFA,0x10,0x82, 00029 0x10,0x82,0x10,0xFA,0x10,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82, 00030 0xD0,0x82,0xD0,0xFA,0xD0,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82, 00031 0xD0,0x82,0xD8,0x86,0xC4,0x88,0xF2,0x93,0xFB,0xB7,0xF9,0xA7, 00032 0xFD,0xAF,0xFD,0xAF,0xF9,0xA7,0xFA,0x97,0xF2,0x93,0xC4,0x88, 00033 0x18,0x86,0xF0,0x83 00034 }; 00035 00036 //水滴图案 00037 unsigned char bmp_hum[] = { 00038 0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x80,0x03,0x08,0x80,0x03,0x18,0x80,0x07,0x1C, 00039 0xC0,0x07,0x3C,0xC0,0x07,0x3E,0xE0,0x0F,0x3E,0xE0,0x0F,0x7A,0xF0,0x1F,0x7B,0xF8, 00040 0x1F,0x72,0xF8,0x1F,0x3E,0xF8,0x3F,0x1C,0xFC,0x3F,0x00,0xFC,0x7F,0x00,0xFE,0x7F, 00041 0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00, 00042 0xF3,0xFF,0x00,0xF2,0x7F,0x00,0xE6,0x7F,0x00,0xC6,0x7F,0x00,0x0E,0x3F,0x00,0x3C, 00043 0x1E,0x00,0xF8,0x1F,0x00,0xE0,0x07,0x00,0x80,0x01 00044 }; 00045 00046 void oled_init(Adafruit_SSD1306_I2c &adaf) 00047 { 00048 adaf.setTextColor(1, 0); 00049 //adaf.setTextColor(0, 1); 00050 adaf.setTextSize(1); 00051 } 00052 00053 #if 0 00054 void oled(float temp, float humi, float light, float pm25, float etoh) 00055 //void oled(U8GLIB &u8g, float temp, float humi, float light, float pm25, float etoh) 00056 { 00057 //gpio_write(&g_LED, 1); 00058 u8g.firstPage(); 00059 do { 00060 u8g.setDefaultForegroundColor(); 00061 00062 u8g.drawXBMP( 4, 1, 15, 32, bmp_tem); 00063 u8g.drawXBMP( 70, 2, 24, 30, bmp_hum); 00064 00065 setFont_M; //设置字体为大 00066 u8g.setPrintPos(20, 16); //设置文字开始坐标 00067 u8g.print("`C "); 00068 setFont_L; //设置字体为大 00069 u8g.setPrintPos(20, 32); //设置文字开始坐标 00070 u8g.print(temp , 1); //温度 00071 00072 u8g.setPrintPos(100, 16); //设置文字开始坐标 00073 u8g.print("%"); 00074 setFont_L; //设置字体为大 00075 u8g.setPrintPos(100, 32); //设置文字开始坐标 00076 u8g.print(humi , 0); //湿度 00077 00078 setFont_L; //设置字体 00079 u8g.setPrintPos(4, 49); //设置文字开始坐标 00080 u8g.print(light , 0); //光照强度 00081 setFont_M; //设置字体 00082 u8g.print(" Lux"); 00083 00084 setFont_L; //设置字体 00085 u8g.setPrintPos(4, 63); //设置文字开始坐标 00086 u8g.print(pm25 , 0); //光照强度 00087 setFont_M; //设置字体 00088 u8g.print(" ug/m3"); 00089 00090 00091 setFont_L; //设置字体 00092 u8g.setPrintPos(80, 49); //设置文字开始坐标 00093 u8g.print(etoh , 0); //光照强度 00094 setFont_M; //设置字体 00095 u8g.print(" ppm"); 00096 00097 // setFont_M; //设置字体为大 00098 // u8g.setPrintPos(80, 63); //设置文字开始坐标 00099 // u8g.print(" LED:"); 00100 00101 } while( u8g.nextPage() ); 00102 //gpio_write(&g_LED, 0); 00103 } 00104 #elif 1 00105 void oled(Adafruit_SSD1306_I2c &adaf, float temp, float humi, float light, float pm25, float etoh) 00106 { 00107 adaf.clearDisplay(); 00108 00109 //adaf.drawBitmap(4, 1, bmp_tem, 15, 32, WHITE); 00110 //adaf.drawBitmap(70, 2, bmp_hum, 24, 30, WHITE); 00111 00112 //temp = 32.2; 00113 adaf.setTextCursor(0, 5); //设置文字开始坐标 00114 adaf.printf("Temp:%.1f'C", temp); 00115 00116 //light = 210.0; 00117 adaf.setTextCursor(74, 5); //设置文字开始坐标 00118 adaf.printf("%.1fLux", light); //光照强度 00119 00120 //humi = 90.6; 00121 adaf.setTextCursor(0, 30); //设置文字开始坐标 00122 adaf.printf("Humi:%.1f%%", humi); 00123 00124 //pm25 = 9.7; 00125 adaf.printf(" %.1fug/m3", pm25); //PM2.5 00126 00127 //etoh = 2.6; 00128 adaf.setTextCursor(1, 52); //设置文字开始坐标 00129 adaf.printf("%.1f ppm", etoh); //甲醛 00130 00131 adaf.drawFastVLine(69, 0, 63, WHITE); 00132 00133 adaf.display(); 00134 } 00135 #else 00136 void oled(float temp, float humi, float light, float pm25, float etoh) 00137 { 00138 static int16_t x = 0; 00139 static int16_t y = 0; 00140 adaf.clearDisplay(); 00141 //adaf.setTextColor(0, 1); 00142 adaf.setTextCursor(x, y); 00143 adaf.printf("Lux\r\n"); 00144 adaf.display(); 00145 x += 2; 00146 if (x > 128) { 00147 x = 0; 00148 y += 2; 00149 if (y > 64) { 00150 y = 0; 00151 } 00152 } 00153 } 00154 #endif 00155 #endif //OLED_CPP_
Generated on Tue Jul 19 2022 01:01:49 by
1.7.2
