zoukankan      html  css  js  c++  java
  • Arduino 开源库 u8glib2 之 图标显示【原创】

    Arduino 开源库 u8glib2 研究之 图标显示
                   -----------------关于drawXBM drawXBMP函数使用的研究


    因为心血来潮,近来想做一个贪食蛇的游戏,手上有Arduino和我们自己开发的Newbit OLED Shield,硬件完全满足,所以在网上搜了下,发现好多人在用u8glib, 现在已经出了第二版 u8glib2, 第一版已经停止维护了, 不过两版的源码可以在 github.com下载,具体网址是

    这个库很强大,显示文字(多种字体可选),划几何图形,绘图都没有问题。



    在Arduino 1.6.12的环境里,可以直接下载库(非源码),下载了可以用,下载的方法是
    1. 在Arduino中选择菜单 “项目”
    2. 点击“加载库"->”管理库“
    3. 在搜索框里输入 u8g2 ,
    4. 安装最新的版本,比如  2.8.5
    不过这个库的文档似乎不太完善,还是要看看源码才知道库的使用方法。所幸还有一份勉强可以用的参考文档
    http://www.docin.com/p-1011581730.html
    为了制作贪食蛇的游戏,要显示蛇身的单元格,因此首先要了解利用 u8glib2如何显示图标。

    库中有多个函数用来显示位图(也即是我们所说的图标),这种位图是不规则的,通常不是几何图形,比如代表蛇身的块,一颗国际象棋等等。
    以下两个是比较好用的。两个函数功能相仿,只是前者输入为ram中的数据,后者输入为rom中的数据,用的时候自行选择
    void drawXBM(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
    void drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)

    举例来说明一下这个函数如何使用

    数据是
    const uint8_t ele3x3[] PROGMEM = {
    0X07,
    0X06,
    0X04,
    };
    这代表一个缺少左下角的正方形,其实是一个直角三角形。  ele3x3[0] = 7 = 0b0000 0111, 取低3位, 而D2则对应屏上最右边。
    它表示的3个点是
    .  .  .
    同理第ele3x3[1] = 6, 表示
    x .  .
    ele3x3[2] = 4,表示
    x  x  .
    (x)表示在屏上不显示任何内容

    整个数组的显示内容为
    . . .
      . .
        .
    当左右上下间距相同时,就是一个直角三角形了。

    假定我们要显示在 (30,30) (33,33)这个矩形区域中。

    了解要显示的对象之后,再看如何调用函数 drawXBMP()
    drawXBMP(30,30, 3, 3, ele3x3);


    好了,来看看显示的效果






    ---------------------------------------------------
    代码下载

    https://pan.baidu.com/s/1c1Vru3Q


    【Newbit Studio】 尊重原创,转载请注明来自www.newbitstudio.com




  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/newbit/p/6189193.html
Copyright © 2011-2022 走看看