查看: 1840|回复: 6

使用u8g2绘制一些简单图标

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-9-13 19:00 | 显示全部楼层 |阅读模式
    之前写了个取模工具,并介绍了使用u8g2显示图片的方法。
    https://www.arduino.cn/thread-42174-1-1.html

    但这个方法的缺陷是,图片数组存储,会消耗很大的flash空间。
    如果是一些简单的图形,并不需要通过上面这种方式显示,u8g2提供常见的图形绘制函数,通过这些函数组合,即可绘制出我们想要的图标。
    相关函数参考:https://github.com/olikraus/u8g2/wiki/u8g2reference



    这里提供一个绘制电池状态的示例,带有三种状态:电量低、充电中、满电。


    效果:
    未标题-1.jpg


    示例:

    kittenblock中小学创客名师推荐的图形化编程软件

    #include <U8g2lib.h>
    #include <Wire.h>
    
    U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, SCL, SDA);
    
    void setup()
    {
      u8g2.begin();
      u8g2.setFlipMode(0);
    }
    
    void loop()
    {
      u8g2.firstPage();
      do
      {
        drawBattery(35, 1);
        drawBatterycharging(35, 1);
        // drawBatteryFull(35, 1);
        // drawBatteryLow(35, 1);
      } while (u8g2.nextPage());
    }
    
    void drawBattery(int x, int y)
    {
      u8g2.drawBox(x, y + 8, 3, 14);
      u8g2.drawLine(x + 2, y + 1, x + 2, y + 28);
      u8g2.drawFrame(x + 3, y, 54, 30);
      u8g2.drawFrame(x + 4, y + 1, 52, 28);
      u8g2.drawLine(x + 57, y + 1, x + 57, y + 28);
    }
    
    void drawBatteryFull(int x, int y)
    {
      u8g2.drawBox(x + 7, y + 4, 46, 22);
    }
    
    void drawBatterycharging(int x, int y)
    {
      int x1 = x + 18;
      int y1 = y + 5;
      u8g2.drawTriangle(x1, y1 + 4, x1 + 14, y1 + 18, x1 + 15, y1 + 9);
      u8g2.drawTriangle(x1 + 10, y1, x1 + 26, y1 + 15, x1 + 11, y1 + 9);
    }
    
    void drawBatteryLow(int x, int y)
    {
      u8g2.drawBox(x + 50, y + 4, 3, 22);
    }




    该用户从未签到

    发表于 2019-9-13 21:29 | 显示全部楼层
    写一个自动根据图片生成绘制指令的程序呗?

    点评

    这个就有点难了,要把一个图自动拆成点线面框圈  详情 回复 发表于 2019-9-13 22:34
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2019-9-13 22:34 | 显示全部楼层
    Zoologist 发表于 2019-9-13 21:29
    写一个自动根据图片生成绘制指令的程序呗?

    这个就有点难了,要把一个图自动拆成点线面框圈
  • TA的每日心情
    郁闷
    2020-2-26 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-1 21:28 | 显示全部楼层
    大大,那个取模网站失效了好像

    点评

    能打开啊  详情 回复 发表于 2020-5-1 21:38
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2020-5-1 21:38 | 显示全部楼层
    伏仙子 发表于 2020-5-1 21:28
    大大,那个取模网站失效了好像

    能打开啊
  • TA的每日心情
    郁闷
    2020-2-26 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-23 21:06 | 显示全部楼层

    我这里经常出问题,看样子要学一下上位机了,直接做成软件(疯狂暗示)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    求大神看看哪里有问题,设备在线,米家也同步正常,就.....
    求大神看看哪里有问题,设
    代码: #define BLINKER_PRINT Serial //用于打开串口 #define BLINKER_WIFI #define
    晒图ESP8266一个框架
    晒图ESP8266一个框架
    好久没发帖了,出来活跃活跃一下。ESP8266免身份登录截图。 最近外研究新的架构M2M或P
    Arduino 求助 串口接收数据不正确,数据丢失问题
    Arduino 求助 串口接收数
    问题整了好久,我自己写的C#程序发送数据,arduino接收数据。 但是发现arduino接收的
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表