久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8674|回復: 5
打印 上一主題 下一主題
收起左側

U8glib寫的oled電量顯示

[復制鏈接]
跳轉到指定樓層
樓主
用的U8glib寫的,用了兩種方式,位圖和字符輸出 ,代碼直接打包放下面,默認i2c接線A4 A5。我用的arduino nano ,OLED顯示屏顯示的位置根據自己需要改代碼中相應位置

源程序如下:

  1. #include "U8glib.h"
  2. U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);        // I2C / TWI
  3. //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);        // I2C / TWI  SDA A4 SCL   A5
  4. #define u8g_logo_width 38
  5. #define u8g_logo_height 24
  6. //static unsigned char u8g_logo_bits[] = {
  7. int flash=0;
  8. const uint8_t rook_bitmap5[] U8G_PROGMEM = {
  9. 0x00,0x00,0xFE,0xFF,0xFF,0xFE,0x00,0x00};//電池滿   
  10. const uint8_t rook_bitmap4[] U8G_PROGMEM = {
  11. 0x00,0x00,0xFE,0xFD,0xFD,0xFE,0x00,0x00};
  12. const uint8_t rook_bitmap3[] U8G_PROGMEM = {
  13. 0x00,0x00,0xFE,0xF9,0xF9,0xFE,0x00,0x00};
  14. const uint8_t rook_bitmap2[] U8G_PROGMEM = {
  15. 0x00,0x00,0xFE,0xE1,0xE1,0xFE,0x00,0x00};
  16. const uint8_t rook_bitmap1[] U8G_PROGMEM = {
  17. 0x00,0x00,0xFE,0x81,0x81,0xFE,0x00,0x00};
  18. const uint8_t rook_bitmap0[] U8G_PROGMEM = {
  19. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //電池空   
  20. //讀取vcc電壓
  21. long readVcc() {
  22.   long result;
  23.   // Read 1.1V reference against AVcc
  24.   ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  25.   delay(2); // Wait for Vref to settle
  26.   ADCSRA |= _BV(ADSC); // Convert
  27.   while (bit_is_set(ADCSRA,ADSC));
  28.   result = ADCL;
  29.   result |= ADCH<<8;
  30.   result = 1126400L / result; // Back-calculate AVcc in mV
  31.   return result;
  32. }
  33. void loop(void) {
  34. float vcc_vol=readVcc()/1000;                //將讀取的vcc電壓mv轉換為v
  35. //旋轉90°
  36. //u8g.setRot90(); //or setRot180();  setRot270();
  37. u8g.setFont(u8g_font_gdr14r);//坐標函數 字體osb18
  38. // u8g.setPrintPos(0, 20);      //定位電池電量圖標的起始位置
  39.    if (vcc_vol >=4.5 ){
  40.   u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, rook_bitmap5);// u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, rook_bitmap0);
  41.   }
  42.   if (vcc_vol <4.5 && vcc_vol>=4 ){
  43.   u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, rook_bitmap4);
  44.   }
  45.   if (vcc_vol <4 && vcc_vol>=3.5 ){
  46.   u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, rook_bitmap3);
  47.   }
  48.   if (vcc_vol <3.5 && vcc_vol>=3 ){
  49. u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, rook_bitmap2);
  50.   }
  51.   if (vcc_vol <3 ){                  //當VCC電壓小于3v時圖標閃爍,電池電量不足警告
  52.   switch (flash){               
  53.     case 0:  
  54.          u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, rook_bitmap1);
  55.          flash=1;
  56.          break;
  57.     case 1:
  58.          u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, rook_bitmap0);
  59.          flash=0;
  60.          break;
  61.        }     
  62.      }

  63. ……………………

  64. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
XBM.zip (1.24 KB, 下載次數: 65)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:255921 發表于 2018-1-19 17:18 | 只看該作者
代碼有點問題了,不過現在沒時間改了
回復

使用道具 舉報

板凳
ID:277903 發表于 2018-5-13 09:45 | 只看該作者
代碼幫你改了下 現在正常可以使用

  1. #include "U8glib.h"
  2. //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);        // I2C / TWI
  3. U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);        // I2C / TWI  SDA A4 SCL   A5
  4. //static unsigned char u8g_logo_bits[] = {
  5. int flash = 0;
  6. const uint8_t rook_bitmap5[] U8G_PROGMEM = {
  7.   0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0x00
  8. };//電池滿
  9. const uint8_t rook_bitmap4[] U8G_PROGMEM = {
  10.   0x00, 0x00, 0xFE, 0xFD, 0xFD, 0xFE, 0x00, 0x00
  11. };
  12. const uint8_t rook_bitmap3[] U8G_PROGMEM = {
  13.   0x00, 0x00, 0xFE, 0xF9, 0xF9, 0xFE, 0x00, 0x00
  14. };
  15. const uint8_t rook_bitmap2[] U8G_PROGMEM = {
  16.   0x00, 0x00, 0xFE, 0xE1, 0xE1, 0xFE, 0x00, 0x00
  17. };
  18. const uint8_t rook_bitmap1[] U8G_PROGMEM = {
  19.   0x00, 0x00, 0xFE, 0x81, 0x81, 0xFE, 0x00, 0x00
  20. };
  21. const uint8_t rook_bitmap0[] U8G_PROGMEM = {
  22.   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  23. }; //電池空
  24. //讀取vcc電壓
  25. long readVcc() {
  26.   long result;
  27.   // Read 1.1V reference against AVcc
  28.   ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  29.   delay(2); // Wait for Vref to settle
  30.   ADCSRA |= _BV(ADSC); // Convert
  31.   while (bit_is_set(ADCSRA, ADSC));
  32.   result = ADCL;
  33.   result |= ADCH << 8;
  34.   result = 1126400L / result; // Back-calculate AVcc in mV
  35.   return result;
  36. }
  37. void loop(void) {
  38.   float vcc_vol = readVcc() / 1000;            //將讀取的vcc電壓mv轉換為v
  39.   //旋轉90°
  40.   //u8g.setRot90(); //or setRot180();  setRot270();
  41.   u8g.firstPage();
  42.   do {
  43.     u8g.setFont(u8g_font_gdr14r);//坐標函數 字體osb18
  44.     if (vcc_vol >= 4.5 ) {
  45.       u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap5);
  46.     }
  47.     if (vcc_vol < 4.5 && vcc_vol >= 4 ) {
  48.       u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap4);
  49.     }
  50.     if (vcc_vol < 4 && vcc_vol >= 3.5 ) {

  51.       u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap3);
  52.     }
  53.     if (vcc_vol < 3.5 && vcc_vol >= 3 ) {

  54.       u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap2);
  55.     }
  56.     if (vcc_vol < 3 ) {                //當VCC電壓小于3v時圖標閃爍,電池電量不足警告
  57.       switch (flash) {
  58.         case 0:
  59.           u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap1);
  60.           flash = 1;
  61.           break;
  62.         case 1:
  63.           u8g.drawBitmapP(0, 0, 1, 8, rook_bitmap0);
  64.           flash = 0;
  65.           break;
  66.       }
  67.     }
  68.   } while ( u8g.nextPage() );
  69. }

  70. void setup(void) {
  71.   // flip screen, if required
  72.   // u8g.setRot180();
  73. }


復制代碼
回復

使用道具 舉報

地板
ID:373684 發表于 2018-10-21 16:48 | 只看該作者
樓上都是大神啊。
回復

使用道具 舉報

5#
ID:429183 發表于 2018-11-22 12:27 | 只看該作者
膜拜大神。。。
回復

使用道具 舉報

6#
ID:371527 發表于 2018-12-18 20:34 | 只看該作者
謝謝!看看你的顯示效果,如果上貼圖片更直觀
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品av| 久久99蜜桃综合影院免费观看 | 亚洲aⅴ | 欧美一区二区三区 | 夜夜久久 | 久久精品国产精品青草 | 一级毛片视频在线观看 | 亚洲乱码一区二区三区在线观看 | 99精品视频在线观看 | 蜜桃黄网| 午夜电影合集 | 国产91在线观看 | 久久久久国产一区二区三区 | 久久99精品视频 | 中文字幕亚洲一区二区va在线 | 国产在线观看 | 久久久久国产精品一区二区 | 日韩中文一区二区三区 | 亚洲a人 | av手机免费在线观看 | 国产美女特级嫩嫩嫩bbb片 | 午夜丰满寂寞少妇精品 | 2018国产大陆天天弄 | 亚洲一区二区三区视频在线 | 欧美日韩综合 | 久久这里有精品 | 国产高清免费 | 久久久久久国产精品 | 日本三级线观看 视频 | 97色在线视频 | 日韩在线免费播放 | 一级毛片高清 | 男女羞羞在线观看 | 日韩久久精品电影 | 成人a在线| 亚洲欧美视频一区二区 | 欧美午夜一区二区三区免费大片 | 91社影院在线观看 | 日韩国产一区二区三区 | 九九久久精品视频 | 免费黄色大片 |