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




原文地址:https://www.cnblogs.com/newbit/p/6189193.html