hadif azli
/
TEST123
BLYNK TEST
oled.cpp@1:0e75de2a5d21, 2016-06-13 (annotated)
- Committer:
- lixianyu
- Date:
- Mon Jun 13 02:21:11 2016 +0000
- Revision:
- 1:0e75de2a5d21
- Child:
- 2:6cd3b0947188
u8glib???????????????????????????Adafruit_GFX????OLED????????bitmap??????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lixianyu | 1:0e75de2a5d21 | 1 | #include "mbed.h" |
lixianyu | 1:0e75de2a5d21 | 2 | #include "Adafruit_SSD1306.h" |
lixianyu | 1:0e75de2a5d21 | 3 | #include "oled.h" |
lixianyu | 1:0e75de2a5d21 | 4 | |
lixianyu | 1:0e75de2a5d21 | 5 | I2C g_i2c(P0_11, P0_10);//SDA, SCL |
lixianyu | 1:0e75de2a5d21 | 6 | Adafruit_SSD1306_I2c adaf(g_i2c, P0_13, 0x78, 64, 128); |
lixianyu | 1:0e75de2a5d21 | 7 | //U8GLIB_SSD1306_MICRODUINO_128X64 u8g(U8G_I2C_OPT_NONE); //设置OLED型号 |
lixianyu | 1:0e75de2a5d21 | 8 | //-------字体设置,大、中、小 |
lixianyu | 1:0e75de2a5d21 | 9 | #if 0 |
lixianyu | 1:0e75de2a5d21 | 10 | #define setFont_L u8g.setFont(u8g_font_7x13) |
lixianyu | 1:0e75de2a5d21 | 11 | #define setFont_M u8g.setFont(u8g_font_fixed_v0r) |
lixianyu | 1:0e75de2a5d21 | 12 | #define setFont_S u8g.setFont(u8g_font_chikitar) |
lixianyu | 1:0e75de2a5d21 | 13 | #elif 0 |
lixianyu | 1:0e75de2a5d21 | 14 | #define setFont_L adaf.setTextSize(14) |
lixianyu | 1:0e75de2a5d21 | 15 | #define setFont_M adaf.setTextSize(10) |
lixianyu | 1:0e75de2a5d21 | 16 | #define setFont_S adaf.setTextSize(6) |
lixianyu | 1:0e75de2a5d21 | 17 | #else |
lixianyu | 1:0e75de2a5d21 | 18 | #define setFont_L |
lixianyu | 1:0e75de2a5d21 | 19 | #define setFont_M |
lixianyu | 1:0e75de2a5d21 | 20 | #define setFont_S |
lixianyu | 1:0e75de2a5d21 | 21 | #endif |
lixianyu | 1:0e75de2a5d21 | 22 | |
lixianyu | 1:0e75de2a5d21 | 23 | //温度计图案 |
lixianyu | 1:0e75de2a5d21 | 24 | unsigned char bmp_tem[] = { |
lixianyu | 1:0e75de2a5d21 | 25 | 0xE0,0x81,0x30,0x83,0x10,0x82,0x10,0x82,0x10,0xFA,0x10,0x82, |
lixianyu | 1:0e75de2a5d21 | 26 | 0x10,0x82,0x10,0xFA,0x10,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82, |
lixianyu | 1:0e75de2a5d21 | 27 | 0xD0,0x82,0xD0,0xFA,0xD0,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82, |
lixianyu | 1:0e75de2a5d21 | 28 | 0xD0,0x82,0xD8,0x86,0xC4,0x88,0xF2,0x93,0xFB,0xB7,0xF9,0xA7, |
lixianyu | 1:0e75de2a5d21 | 29 | 0xFD,0xAF,0xFD,0xAF,0xF9,0xA7,0xFA,0x97,0xF2,0x93,0xC4,0x88, |
lixianyu | 1:0e75de2a5d21 | 30 | 0x18,0x86,0xF0,0x83 |
lixianyu | 1:0e75de2a5d21 | 31 | }; |
lixianyu | 1:0e75de2a5d21 | 32 | |
lixianyu | 1:0e75de2a5d21 | 33 | //水滴图案 |
lixianyu | 1:0e75de2a5d21 | 34 | unsigned char bmp_hum[] = { |
lixianyu | 1:0e75de2a5d21 | 35 | 0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x80,0x03,0x08,0x80,0x03,0x18,0x80,0x07,0x1C, |
lixianyu | 1:0e75de2a5d21 | 36 | 0xC0,0x07,0x3C,0xC0,0x07,0x3E,0xE0,0x0F,0x3E,0xE0,0x0F,0x7A,0xF0,0x1F,0x7B,0xF8, |
lixianyu | 1:0e75de2a5d21 | 37 | 0x1F,0x72,0xF8,0x1F,0x3E,0xF8,0x3F,0x1C,0xFC,0x3F,0x00,0xFC,0x7F,0x00,0xFE,0x7F, |
lixianyu | 1:0e75de2a5d21 | 38 | 0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00, |
lixianyu | 1:0e75de2a5d21 | 39 | 0xF3,0xFF,0x00,0xF2,0x7F,0x00,0xE6,0x7F,0x00,0xC6,0x7F,0x00,0x0E,0x3F,0x00,0x3C, |
lixianyu | 1:0e75de2a5d21 | 40 | 0x1E,0x00,0xF8,0x1F,0x00,0xE0,0x07,0x00,0x80,0x01 |
lixianyu | 1:0e75de2a5d21 | 41 | }; |
lixianyu | 1:0e75de2a5d21 | 42 | |
lixianyu | 1:0e75de2a5d21 | 43 | void oled_init(void) |
lixianyu | 1:0e75de2a5d21 | 44 | { |
lixianyu | 1:0e75de2a5d21 | 45 | adaf.setTextColor(1, 0); |
lixianyu | 1:0e75de2a5d21 | 46 | //adaf.setTextColor(0, 1); |
lixianyu | 1:0e75de2a5d21 | 47 | adaf.setTextSize(1); |
lixianyu | 1:0e75de2a5d21 | 48 | } |
lixianyu | 1:0e75de2a5d21 | 49 | |
lixianyu | 1:0e75de2a5d21 | 50 | #if 0 |
lixianyu | 1:0e75de2a5d21 | 51 | void oled(float temp, float humi, float light, float pm25, float etoh) |
lixianyu | 1:0e75de2a5d21 | 52 | //void oled(U8GLIB &u8g, float temp, float humi, float light, float pm25, float etoh) |
lixianyu | 1:0e75de2a5d21 | 53 | { |
lixianyu | 1:0e75de2a5d21 | 54 | //gpio_write(&g_LED, 1); |
lixianyu | 1:0e75de2a5d21 | 55 | u8g.firstPage(); |
lixianyu | 1:0e75de2a5d21 | 56 | do { |
lixianyu | 1:0e75de2a5d21 | 57 | u8g.setDefaultForegroundColor(); |
lixianyu | 1:0e75de2a5d21 | 58 | |
lixianyu | 1:0e75de2a5d21 | 59 | u8g.drawXBMP( 4, 1, 15, 32, bmp_tem); |
lixianyu | 1:0e75de2a5d21 | 60 | u8g.drawXBMP( 70, 2, 24, 30, bmp_hum); |
lixianyu | 1:0e75de2a5d21 | 61 | |
lixianyu | 1:0e75de2a5d21 | 62 | setFont_M; //设置字体为大 |
lixianyu | 1:0e75de2a5d21 | 63 | u8g.setPrintPos(20, 16); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 64 | u8g.print("`C "); |
lixianyu | 1:0e75de2a5d21 | 65 | setFont_L; //设置字体为大 |
lixianyu | 1:0e75de2a5d21 | 66 | u8g.setPrintPos(20, 32); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 67 | u8g.print(temp , 1); //温度 |
lixianyu | 1:0e75de2a5d21 | 68 | |
lixianyu | 1:0e75de2a5d21 | 69 | u8g.setPrintPos(100, 16); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 70 | u8g.print("%"); |
lixianyu | 1:0e75de2a5d21 | 71 | setFont_L; //设置字体为大 |
lixianyu | 1:0e75de2a5d21 | 72 | u8g.setPrintPos(100, 32); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 73 | u8g.print(humi , 0); //湿度 |
lixianyu | 1:0e75de2a5d21 | 74 | |
lixianyu | 1:0e75de2a5d21 | 75 | setFont_L; //设置字体 |
lixianyu | 1:0e75de2a5d21 | 76 | u8g.setPrintPos(4, 49); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 77 | u8g.print(light , 0); //光照强度 |
lixianyu | 1:0e75de2a5d21 | 78 | setFont_M; //设置字体 |
lixianyu | 1:0e75de2a5d21 | 79 | u8g.print(" Lux"); |
lixianyu | 1:0e75de2a5d21 | 80 | |
lixianyu | 1:0e75de2a5d21 | 81 | setFont_L; //设置字体 |
lixianyu | 1:0e75de2a5d21 | 82 | u8g.setPrintPos(4, 63); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 83 | u8g.print(pm25 , 0); //光照强度 |
lixianyu | 1:0e75de2a5d21 | 84 | setFont_M; //设置字体 |
lixianyu | 1:0e75de2a5d21 | 85 | u8g.print(" ug/m3"); |
lixianyu | 1:0e75de2a5d21 | 86 | |
lixianyu | 1:0e75de2a5d21 | 87 | |
lixianyu | 1:0e75de2a5d21 | 88 | setFont_L; //设置字体 |
lixianyu | 1:0e75de2a5d21 | 89 | u8g.setPrintPos(80, 49); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 90 | u8g.print(etoh , 0); //光照强度 |
lixianyu | 1:0e75de2a5d21 | 91 | setFont_M; //设置字体 |
lixianyu | 1:0e75de2a5d21 | 92 | u8g.print(" ppm"); |
lixianyu | 1:0e75de2a5d21 | 93 | |
lixianyu | 1:0e75de2a5d21 | 94 | // setFont_M; //设置字体为大 |
lixianyu | 1:0e75de2a5d21 | 95 | // u8g.setPrintPos(80, 63); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 96 | // u8g.print(" LED:"); |
lixianyu | 1:0e75de2a5d21 | 97 | |
lixianyu | 1:0e75de2a5d21 | 98 | } while( u8g.nextPage() ); |
lixianyu | 1:0e75de2a5d21 | 99 | //gpio_write(&g_LED, 0); |
lixianyu | 1:0e75de2a5d21 | 100 | } |
lixianyu | 1:0e75de2a5d21 | 101 | #elif 1 |
lixianyu | 1:0e75de2a5d21 | 102 | void oled(float temp, float humi, float light, float pm25, float etoh) |
lixianyu | 1:0e75de2a5d21 | 103 | { |
lixianyu | 1:0e75de2a5d21 | 104 | adaf.clearDisplay(); |
lixianyu | 1:0e75de2a5d21 | 105 | |
lixianyu | 1:0e75de2a5d21 | 106 | //adaf.drawBitmap(4, 1, bmp_tem, 15, 32, WHITE); |
lixianyu | 1:0e75de2a5d21 | 107 | //adaf.drawBitmap(70, 2, bmp_hum, 24, 30, WHITE); |
lixianyu | 1:0e75de2a5d21 | 108 | |
lixianyu | 1:0e75de2a5d21 | 109 | temp = 32.2; |
lixianyu | 1:0e75de2a5d21 | 110 | adaf.setTextCursor(0, 5); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 111 | adaf.printf("Temp:%.1f'C", temp); |
lixianyu | 1:0e75de2a5d21 | 112 | |
lixianyu | 1:0e75de2a5d21 | 113 | light = 210.0; |
lixianyu | 1:0e75de2a5d21 | 114 | adaf.setTextCursor(74, 5); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 115 | adaf.printf("%.1fLux", light); //光照强度 |
lixianyu | 1:0e75de2a5d21 | 116 | |
lixianyu | 1:0e75de2a5d21 | 117 | humi = 90.6; |
lixianyu | 1:0e75de2a5d21 | 118 | adaf.setTextCursor(0, 30); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 119 | adaf.printf("Humi:%.1f%%", humi); |
lixianyu | 1:0e75de2a5d21 | 120 | |
lixianyu | 1:0e75de2a5d21 | 121 | pm25 = 9.7; |
lixianyu | 1:0e75de2a5d21 | 122 | adaf.printf(" %.1fug/m3", pm25); //PM2.5 |
lixianyu | 1:0e75de2a5d21 | 123 | |
lixianyu | 1:0e75de2a5d21 | 124 | etoh = 2.6; |
lixianyu | 1:0e75de2a5d21 | 125 | adaf.setTextCursor(1, 52); //设置文字开始坐标 |
lixianyu | 1:0e75de2a5d21 | 126 | adaf.printf("%.1f ppm", etoh); //甲醛 |
lixianyu | 1:0e75de2a5d21 | 127 | |
lixianyu | 1:0e75de2a5d21 | 128 | adaf.drawFastVLine(69, 0, 63, WHITE); |
lixianyu | 1:0e75de2a5d21 | 129 | |
lixianyu | 1:0e75de2a5d21 | 130 | adaf.display(); |
lixianyu | 1:0e75de2a5d21 | 131 | } |
lixianyu | 1:0e75de2a5d21 | 132 | #else |
lixianyu | 1:0e75de2a5d21 | 133 | void oled(float temp, float humi, float light, float pm25, float etoh) |
lixianyu | 1:0e75de2a5d21 | 134 | { |
lixianyu | 1:0e75de2a5d21 | 135 | static int16_t x = 0; |
lixianyu | 1:0e75de2a5d21 | 136 | static int16_t y = 0; |
lixianyu | 1:0e75de2a5d21 | 137 | adaf.clearDisplay(); |
lixianyu | 1:0e75de2a5d21 | 138 | //adaf.setTextColor(0, 1); |
lixianyu | 1:0e75de2a5d21 | 139 | adaf.setTextCursor(x, y); |
lixianyu | 1:0e75de2a5d21 | 140 | adaf.printf("Lux\r\n"); |
lixianyu | 1:0e75de2a5d21 | 141 | adaf.display(); |
lixianyu | 1:0e75de2a5d21 | 142 | x += 2; |
lixianyu | 1:0e75de2a5d21 | 143 | if (x > 128) { |
lixianyu | 1:0e75de2a5d21 | 144 | x = 0; |
lixianyu | 1:0e75de2a5d21 | 145 | y += 2; |
lixianyu | 1:0e75de2a5d21 | 146 | if (y > 64) { |
lixianyu | 1:0e75de2a5d21 | 147 | y = 0; |
lixianyu | 1:0e75de2a5d21 | 148 | } |
lixianyu | 1:0e75de2a5d21 | 149 | } |
lixianyu | 1:0e75de2a5d21 | 150 | } |
lixianyu | 1:0e75de2a5d21 | 151 | #endif |